绑定标记与代码隐藏集,最佳实践

时间:2009-01-21 19:08:14

标签: c# asp.net

我想知道在asp.net中使用bind标记和将direct属性设置为控件之间的最佳做法是什么。


aspx.cs

public string Description {get; set;}

ASPX

<asp:Literal ID="txtDescription" runat="server" Text='<%# Description %>' />

aspx.cs

public string Description
{
    get { return txtDescription.Text ; }
    set { txtDescription.Text = value; }
}

ASPX

<asp:Literal ID="txtDescription" runat="server" />

第一个最好将设计与代码分开,在不破坏代码的情况下自由更改ID。但似乎我们可以在某个时候获得非常长的绑定标记,就像这个非常简短的例子:

Text='<%# ((fn_SearchReminders)Container.DataItem).dtDateActivation.Value.ToString("yyyy-MM-dd - hh:mm") %>'

2 个答案:

答案 0 :(得分:3)

唯一值得使用绑定表达式的是...数据绑定。对于处理像文本框这样的静态控件,访问它的最佳方式是你在第二种情况下的方式。

这甚至是处理Model View Presenter实现的情况,其中您的aspx页面通常来自iSomeView,您将访问类似于

的属性
string iSomeView.Description
{
    get { return txtDescription.Text ; }
    set { txtDescription.Text = value; }
}

使用与此类似的方法还可以轻松构建复杂对象:

Person iSomeView.Person
{
    get { return new Person { Name = txtName.Text, Phone = txtPhone.Text }; }
    set { txtName = value.Name; txtPhone.Text = value.Phone; }
}

答案 1 :(得分:0)

如果您使用GridView或Repeater之类的控件以及您可以使用的喜欢 '/&gt; 并可选择指定格式字符串 '/&gt; 其中“d”代表短日期字符串。

如果页面中直接包含其他控件,您可以考虑使用私有方法,该方法会在您认为合适时设置其属性。

private void SetFormFields(Employee emp){
     lblName.Text = emp.Name;
     txtDateOfBirth.Text = emp.BirthDate.ToShortDateString();
}

并在页面加载事件或其他地方调用它。