gpt4 book ai didi

asp.net - 文本框数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 21:23:17 26 4
gpt4 key购买 nike

当使用 WebForms 处理内容时,您往往会在页面上出现大量文本框,这意味着您也往往会出现来回的数据绑定(bind)代码:

tbMyTextBox.Text = MyViewObjectDataClass.MyStringProperty;

MyViewObjectDataClass.MyStringProperty = tbMyTextBox.Text;

这可能会变得相当重复......

我可以使用 AutoMapper 自动实现 View 对象和域对象之间的映射,这引出了我的问题......

有没有办法让 ASP.Net 表单元素自动查看对象?不用求助于上面的几十行?

是的,我可以切换到 MVC,但这对于许多正在进行的项目来说不是一个选择。

最佳答案

在 ASPX 文件中这种方法怎么样:

<asp:TextBox ID="TextBox1" runat="server" Text='<%#MyViewObjectDataClass.Name %>'></asp:TextBox>

但是我们还需要添加语句:

  protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.DataBind();
}
}

另一种方法使用像这样的自定义控件:

            public class NullPanel : Panel
{
private bool _autoBind = true;

public override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer)
{
//base.RenderBeginTag(writer);
}

public override void RenderEndTag(System.Web.UI.HtmlTextWriter writer)
{
//base.RenderEndTag(writer);
}

protected override System.Web.UI.HtmlTextWriterTag TagKey
{
get
{
return System.Web.UI.HtmlTextWriterTag.Unknown;
}
}

[DefaultValue(true)]
public bool AutoBind
{
get
{
return _autoBind;
}
set
{
_autoBind = value;
}
}

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//Set Visible property as true that intent to rise OnPreRender method
this.Visible = true;
}

protected override void DataBindChildren()
{
if (this.Visible && this.AutoBind)
{
base.DataBindChildren();
}
}

protected override void OnPreRender(EventArgs e)
{
if (this.AutoBind)
{
this.DataBind();
}
base.OnPreRender(e);
}
}

然后在 ASPX 文件中使用它:

 <asp:NullPanel ID="panelFenInfo" runat="server" 
Visible='<%#this.IsEditMode%>' >
<asp:TextBox ID="tbName" runat="server" Text='<%#this.MyViewObjectDataClass.Name %>'></asp:TextBox>
<asp:NullPanel>
<asp:NullPanel ID="panelInfo" runat="server"
Visible='<%#!Page.IsPostBack%>' >
<asp:TextBox ID="tbCompany" runat="server" Text='<%#this.MyViewObjectDataClass.Name %>'></asp:TextBox>
<asp:NullPanel>

关于asp.net - 文本框数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com