【问题标题】:How to reload ASP.NET user profile data如何重新加载 ASP.NET 用户配置文件数据
【发布时间】:2012-07-14 22:18:17
【问题描述】:

这感觉像是一个基本问题,但我还是个新手。

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

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

(注意 - formValues 是通过 jQuery 从 AJAX Post 提供的)。

我希望查看实际反映在 ASPX Web 表单上的更新后的个人资料信息,而无需手动刷新页面以获取最近更新的个人资料信息。这可能吗?

这就是我在 Page_Load 方法中所做的事情

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

    }
} 

我希望这是有道理的。 谢谢。

【问题讨论】:

  • 这确实有意义 - 例如,如果您的实际显示在另一个 UpdatePanel 中,那么您可以强制该 UpdatePanel 刷新,导致它重新加载用户配置文件数据。其他策略可能包括通过 JavaScript 直接更新页面上的文本。为了明确提供帮助,了解您的个人资料显示是否托管在 UpdatePanel 中会很有用。
  • @dash 感谢您的回复。是的,当前配置文件显示在 UpdatePanel 中,我试图让它刷新。我也确实考虑过通过 JavaScript 更新控件,但我会继续看看 UpdatePanel 方法是否给了我想要的东西。干杯。

标签: c# asp.net profile


【解决方案1】:

按照 dash 的建议并进一步阅读,我实现了一个看似简单的方法:向 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 -->

..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();

    }; 

下面是隐藏按钮对应的 onclick 事件处理程序:

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

这可能不是最优雅的方法,但它很有效,而且我在此过程中学到了很多东西。非常感谢您的想法和意见。

谢谢。

【讨论】:

    猜你喜欢
    • 2016-05-29
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2021-05-13
    • 2020-11-09
    相关资源
    最近更新 更多