c# - 页面回发后加载用户控制数据?

标签 c# asp.net

我有一个页面,用户可以在其中更新他们的用户信息(例如他们的名字)。我在此页面上还有一个用户控件,它显示大量信息,包括用户的名字。

我遇到的问题是,当我更改此页面上的名字时,保存数据后用户控件不会更新。

这是我的前端:

<UC:LeftNav ID="leftNav" runat="server" />

<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>

<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />

我的按钮单击事件保存用户信息:

protected void btnSave_Click(object sender, EventArgs e)
{
    ...
    user.FirstName = txtFirstName.Text();
    user.Save();
    ...
}

我的显示用户信息的用户控件:

protected void Page_Load(object sender, EventArgs e)
{
    ...
    lblFirstName.Text = user.Firstname;
    ...
}

我检查了调试器,发现页面上的 btnSave_Click 事件发生在用户控件的 Page_Load 事件之后。

有没有办法让我在用户控件中加载用户数据之前发生 btnSave_Click 事件?

最佳答案

不,事件引发时无法更改。但是您可以将用户加载代码放入 Bind 方法中,并从 btnSave_Click 方法中调用它。

leftNav 用户控件中:

public void Page_Load(object sender, EventArgs e)
{
    if(!IsPostback)
    {
        BindUserInfo();
    }
}

public void BindUserInfo()
{
    //Binding code here
}

页面上:

public void btnSave_Click(object sender, EventArgs e)
{
    //Do save work
    leftNav.BindUserInfo();
}

关于c# - 页面回发后加载用户控制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12536193/

相关文章:

c# - "Factory Method"设计模式

c# - Xamarin Android 应用程序更新

c# - 为 GridView 列和换行文本创建最大宽度

.net - ASP.NET 应用程序的国际化库

c# - 在 Web 应用程序中使用类时,我得到的 HttpWebResponse 字符不清晰

c# - 将数据附加到 asp.net mvc 项目结构/树中的文本文件(如何处理文件?)

c# - Entity Framework 大数据集,内存不足异常

c# - Linq 查询从对象 B 中获取与对象 A 具有相同名称和类型的属性

asp.net - 比较 SQL Server 2008 R2 中的 NVarchar 字段

c# - SendGrid 不发送电子邮件