c# - ASP.NET 中的两种数据绑定(bind)方式

标签 c# .net asp.net data-binding 2-way-object-databinding

假设我们有一个对象

class Entity
{
    public string ID {get; set;}
    public string Name {get; set;}
}

我想将属性绑定(bind)到页面上的两个文本框,如下所示:

<asp:FormView ID="FormView" runat="server">
  <ItemTemplate>
    <asp:textbox ID="TextId" Text='<%# Bind("ID") %>'/>
    <asp:textbox ID="TextId" Text='<%# Bind("Name") %>'/>
  </ItemTemplate>
</asp:FormView>

然后在代码后面写这个

public EntityObject
{
    get { return ViewState["Entity"] as Entity; }
    set { ViewState["Entity"] = value; }
}

protected override void OnInit(EventArgs e)
{
    if (EntityObject== null)
        EntityObject= new EntityObject();

    FormView.DataSource = new[] { EntityObject };
    FormView.DataBind();
    base.OnInit(e);
}

当我在文本框中输入值时,我希望 EntityObject 在 PostBack 后重新加载页面时在属性中具有这些值,但属性始终为 null。

最佳答案

遗憾的是,ASP.NET 不支持双向绑定(bind)到 .net 对象... 相反,您可以在每次回发时使用“手动绑定(bind)”之类的东西(这里的 AddIncomeSources 是 RepeaterControl)

public List<Income> AdditionalIncomeList 
{
    get { return ViewState["AdditionalIncome"] as List<Income>; }
    set { ViewState["AdditionalIncome"] = value; }
} 

foreach (RepeaterItem item in AddIncomeSources.Items)
{
    var amount = (TextBox)item.Controls.Cast<Control>().First(c => c.ID == "Amount");
    var document = (DropDownList)item.Controls.Cast<Control>().First(c => c.ID == "Document");
    AdditionalIncomeList[item.ItemIndex].Amount = amount.Text.ToDouble();
    AdditionalIncomeList[item.ItemIndex].IncomeDocument = document.SelectedValue;
}

AddIncomeSources.DataSource = AdditionalIncomeList;
AddIncomeSources.DataBind();

关于c# - ASP.NET 中的两种数据绑定(bind)方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7428762/

相关文章:

c# - .Net/C# - 使用 GAC 的优缺点

asp.net - 在我的应用程序中登录 Facebook/Twitter

c# - 在 C++ 中使用 Mono 进行开发

c# - 如何使用 .NET 安装和设置数据库?

c# - Selenium 2 - 将焦点切换到没有名称/ID 的框架

c# - docker build 期间 dotnet 发布失败

c# - 仅使用 TcpClient 和 StreamWriter/StreamReader 读取 POP3 服务器

c# - 从调整大小的图像中翻译/检测图像的矩形部分

asp.net - Selenium IDE、deleteAllVisibleCookies 和 ASP.NET_SessionId Cookie - 不起作用

html - 如何在确认弹出按钮中禁用 ng-click 事件