";如果“;Formview标记中的条件

本文关键字:条件 Formview quot 如果 | 更新日期: 2023-09-27 18:26:53

我想使用表单视图显示学生成绩单。如果是第二学期的成绩单,则该成绩单将有额外的栏;如果是第三学期的成绩单则有两栏。要找出它是哪个术语,我需要评估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 intellisense表示其无效项。

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

Form View也有一个显示科目分数的中继器控件,还需要使用if Condition。

";如果“;Formview标记中的条件

所以我在回答我自己的问题。感谢Ruben在if语句中接受的答案提示:eval?

<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块更优雅。