绑定标签与代码后端设置,最佳实践

3

我想知道在asp.net中,使用绑定标记和直接设置控件属性之间的最佳实践。


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个回答

3

只有在数据绑定时才值得使用绑定表达式。对于处理像文本框这样的静态控件,最好的访问方式是像第二种情况中所做的那样。

即使在处理模型视图表示器实现时也是如此,通常你的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; }
}

不错的例子。我同意,数据绑定是唯一的例外,否则你很快就会在视图中有逻辑。 - Chuck Conway
但是你可以将逻辑放入公共属性中,就像我第一个例子中所看到的那样。只需将自动属性切换为包含逻辑的经典属性,并在aspx文件中进行绑定。 - jpsimard-nyx
Lucian,我相信他的意思是逻辑将开始出现在.aspx文件中而不是代码文件中。这是WebForms中的反模式。在MVC中,如果您完全摆脱了codebehind文件,那就没问题了。按照我的方式,我倾向于在get中执行输入清理,例如Trim()或正则表达式替换。 - Chris Marisic

0
如果您正在使用像GridView或Repeater之类的控件,您可以简单地使用' />并可选择指定格式字符串,例如' />其中“d”代表短日期字符串。
对于直接包含在页面中的其他控件,您可以考虑使用一个私有方法,在适当时设置它们的属性。
就像这样:
private void SetFormFields(Employee emp){
     lblName.Text = emp.Name;
     txtDateOfBirth.Text = emp.BirthDate.ToShortDateString();
}

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接