Moo*_*Moo 7 asp.net data-binding webforms
当你使用WebForms时,你最终会在页面上出现很多文本框,这意味着你也倾向于使用来回的数据绑定代码:
tbMyTextBox.Text = MyViewObjectDataClass.MyStringProperty;
Run Code Online (Sandbox Code Playgroud)
和
MyViewObjectDataClass.MyStringProperty = tbMyTextBox.Text;
Run Code Online (Sandbox Code Playgroud)
这可能会非常重复......
我可以使用AutoMapper自动化我的视图对象和我的域对象之间的映射,这引出了我的问题......
有没有办法让ASP.Net表单元素自动查看对象?没有诉诸上述几十行?
是的,我可以切换到MVC,但这不是许多正在进行的项目的选择.
在ASPX文件中这种方法怎么样:
<asp:TextBox ID="TextBox1" runat="server" Text='<%#MyViewObjectDataClass.Name %>'></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
但是我们仍然需要添加语句:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.DataBind();
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法使用这样的自定义控件:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16592 次 |
| 最近记录: |