0

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

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

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

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

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

这是我在 Page_Load 方法中所做的

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

    }
} 

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

4

1 回答 1

0

按照破折号的建议并进一步阅读,我实现了一种看似简单的方法:向 jQuery 添加一个隐藏按钮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;
   }

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

谢谢你。

于 2012-07-18T19:16:27.260 回答