这感觉就像一个基本问题,但我还是新人。
我将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;
}
}
我希望这是有道理的。 谢谢。
答案 0 :(得分: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 -->
.. 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;
}
这可能不是最优雅的方法,但它正在发挥作用,而且我在此过程中学到了很多东西。非常感谢您的想法和意见。
谢谢。