2012-07-14 76 views
0

这感觉就像一个基本问题,但我还是新手。如何重新加载ASP.NET用户配置文件数据

我将ASP.NET TextBox控件值(例如用户名,bio等)传递给我的代码隐藏中的页面方法,然后将这些值保存到用户的配置文件中。这一切似乎工作正常。

[WebMethod] 
public static void UpdateProfile(Person formValues) 
{ 
    HttpContext.Current.Profile.SetPropertyValue("Bio", formValues.Bio); 
} 

(注 - formValues正在从一个AJAX后通过jQuery的提供)。

我希望看到实际反映在ASPX Web表单上的更新的配置文件信息,而无需手动刷新页面以获取最近更新的配置文件信息。这可能吗?

下面是我在Page_Load方法

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     FirstName.Text = Profile.FirstName; 
     Bio.Text = Profile.Bio; 

    } 
} 

我希望这是有意义的是做。 谢谢。

+1

确实有意义 - 例如,如果您的实际显示位于另一个UpdatePanel中,则可以强制UpdatePanel刷新,使其重新加载用户配置文件数据。其他策略可能包括通过JavaScript直接更新页面上的文本。为了帮助确定,了解您的配置文件显示是否在UpdatePanel中进行托管会很有用。 – dash 2012-07-14 22:25:38

+0

@dash谢谢你的回复。是的,当前的配置文件显示在UpdatePanel中,我试图让它刷新。我也考虑过通过JavaScript更新控件,但是我将继续观察UpdatePanel方法是否能够提供我想要的内容。干杯。 – mulkraj 2012-07-15 10:20:49

回答

0

按照破折号的建议和做进一步阅读,我实现了一个看起来像一个简单的方法:添加一个隐藏的按钮到UpdatePanel,然后调用隐藏的按钮从jQuery的onclick。

(我提到正在通过一个jQuery UI的对话框收集更新个人资料吗?)

下面是相关的ASPX代码:

<!-- Change User Profile info --> 
    <div id="profileBasicInfoDiv"> 
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="True" UpdateMode="Conditional" Visible="True"> 
      <ContentTemplate>  
       <asp:Label ID="lblProfileUserName" runat="server" Text="Name"></asp:Label> 
       <asp:Button ID="btnUserProfileUpdatePanel1" runat="server" Text="Button" Visible="True" onclick="btnUserProfileUpdatePanel1_Click" />   
      </ContentTemplate>  
     </asp:UpdatePanel> 
     <br /> 
     <a href="#" id="hlShowBasicInfo">Change my details</a> 
    </div> <!-- End of profileBasicInfoDiv --> 

..the的jQuery:

$("#profileChangeBasicInfo").dialog({ 
      modal: true, 
      buttons: { 'Save': function() { $(this).dialog('close'); }      
      }, 
      close: function() { UpdateProfile(); } 

     }); 
function UpdateProfile() { 

     var jsonText = "{'Bio':'" + $("[id$='MainContent_Bio']").val() + "','FirstName':'" + $("[id$='MainContent_FirstName']").val() + "'} "; 
     sendData(jsonText); 
     $("#MainContent_btnUserProfileUpdatePanel1").click(); 

    }; 

这里是相应的o对于隐藏按钮n单击事件处理程序:

protected void btnUserProfileUpdatePanel1_Click(object sender, EventArgs e) 
    { 
     UpdatePanel1.Update(); 
     ((Label)(lblProfileUserName)).Text = Profile.FirstName + " " + Profile.LastName; 
    } 

这可能不是最巧妙的方法,但它的工作,我学到了很多沿途。您的想法和意见非常感谢。

谢谢。

相关问题