我的页面上有一个公共 POCO 属性(SiteDetail),我需要知道在设置服务器控件的属性时最好的方法是什么:
使用内联代码和 Page.DataBind(); 负载
<asp:Label ID="lbName" runat="server" Text="<%# SiteDetail.Name %>"/
>不要在页面加载时使用内联代码和设置控件属性
lbName.Text = SiteDetail.Name;
Page.DataBind()
在负载上使用是否“危险” ?
我的页面上有一个公共 POCO 属性(SiteDetail),我需要知道在设置服务器控件的属性时最好的方法是什么:
使用内联代码和 Page.DataBind(); 负载
<asp:Label ID="lbName" runat="server" Text="<%# SiteDetail.Name %>"/
>
不要在页面加载时使用内联代码和设置控件属性
lbName.Text = SiteDetail.Name;
Page.DataBind()
在负载上使用是否“危险” ?
你看到渲染的源了吗?完全没有区别。两个标签都将在 span 中呈现文本。只需执行一个简单的测试,您就会清楚。
这是我的测试
<asp:Label ID="Label1" runat="server" Text='<%#test %>'></asp:Label>
<asp:Label ID="Label2" runat="server"></asp:Label>
这是下面生成的源。
<span id="Label1">this text is from binding expression</span>
<span id="Label2"><br/>this text set from code behind</span>
你会看不出有什么不同
所以......我做了更多的研究,发现Page.DataBind()
这不是一件好事,最好在你需要的每个控件上调用 DabaBind,正如@Muhammad Akhtar 所说,两种方式呈现相同,所以我更喜欢使用内联代码,因为它看起来更清楚,现在我有
<asp:Label ID="lbName" runat="server" Text="<%# SiteDetail.Name %>"/>
和后面的代码:
if (!IsPostBack)
{
lbName.DataBind();
}