我有一个需要具有以下表达式但不确定语法的列的转发器。在asp.net上使用IF进行复杂绑定表达式
如果value = “DispForm.aspx” 然后 显示 “无文件” 否则 显示了真正的价值。
我试图用一切expresion在同一行,但不知道我在这里缺少
<a href=" <%# DataBinder.Eval(Container.DataItem, "Path") %>">
<%#
if (DataBinder.Eval(Container.DataItem, "FileName") == "DispForm.aspx")
{
"No document";
}
else
{
DataBinder.Eval(Container.DataItem, "FileName");}%>
</a>
错误:
http://screencast.com/t/ZERZjzZxST
我不同意,项目数据绑定是针对每行触发的,报表值2000行。 – 2014-09-26 07:49:51
当然它在每一行都被调用。您的DataBinder.Eval将在每行以及ItemTemplate中的任何标记上进行评估。您甚至可能会获得提升性能的方式,因为与内联标记相比,在编译时,代码隐藏会稍微更优化。 – 2014-09-26 12:31:43
也许我在这里丢失了一些东西,数据表在内存中,而databinder.eval只是基于已经在内存中的数据列计算表达式。但是,每一行都会触发一次服务器端数据绑定事件,因此它必须到每一行的服务器端,我认为databinder.eval已经在内存中具有数据表,并且应该更快。 – 2014-09-26 16:33:00