【问题标题】:"if" Conditions in Formview MarkupFormview 标记中的“if”条件
【发布时间】:2014-10-17 19:58:07
【问题描述】:

我想使用表单视图显示学生成绩单。报告卡将有额外的列,如果它是来自第二学期的报告卡和另外 2 列,如果它来自第三学期。要找出它是哪个术语,我需要评估 TermNumber 属性,并显示适当的标题。这是我的标记代码:

<% if ((int)Eval("TermNumber") == 2) %>
<% { %>
    <th> 1st Term Score</th>
<% } %>
<% else if ((int)Eval("TermNumber") == 3) %>
<% { %>
    <th> 1st Term Score</th>
    <th> 2nd Term Score</th>
<% } %>

这会导致运行时错误:Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。

这是因为 Eval 只能是 标记的一部分。

使用 会导致编译时错误,并且 VS13 智能感知会说它的无效术语。

我的问题是:我怎样才能成功地实现有条件地显示列的目标。我可以在数据绑定控件的标记中使用 if 条件吗?或者有没有其他方法可以实现这一点,而无需为每个术语创建单独的表单视图。

Form View,还有一个repeater控件显示科目分数,也需要用到if条件。

【问题讨论】:

    标签: c# asp.net entity-framework webforms formview


    【解决方案1】:

    所以我正在回答我自己的问题。感谢鲁本接受的答案的提示:eval in if statement?

    <th runat="server" visible='<%# (int)Eval("TermNumber") > 1 %>'>1st Term Score</th>
    <th runat="server" visible='<%# (int)Eval("TermNumber") > 2 %>'>2nd Term Score</th>
    

    这在转发器控件中也可以正常工作。 由于带有 runat="Server" 的 Visible 属性不包含任何标记,因此在最终输出中,它工作得非常好。而且 if 块的代码也更优雅。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多