<% if(Convert.ToInt32(Eval("NbrOrders"))>=Config.MAX_ENQUIRY_SALES) { %>
...
<% } else { %>
...
<% } %>
Run Code Online (Sandbox Code Playgroud)
给我一个InvalidOperationException?如何在ASP中编写条件html生成?
Rob*_*Day 28
使用内联语句作为John_状态,或者在代码后面创建一个执行所需逻辑的函数.
protected string MyFunction(int nbrOrders)
{
if(nbrOrders>=Config.MAX_ENQUIRY_SALES)
{
return "TrueResult";
}
else
{
return "FalseResult";
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用如下
<%# MyFunction(Convert.ToInt32(Eval("NbrOrders"))) %>
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚阅读了另一篇文章的评论,该帖子声明您希望根据此结果显示不同的HTML.在这种情况下,您可以尝试使用包含代码的占位符的Visible标志.如:
<asp:PlaceHolder id="PlaceHolder1" runat="server" visible='<%# (Convert.ToInt32(Eval("NbrOrders"))>=Config.MAX_ENQUIRY_SALES)%>'>
<div>My True Html Here</div>
</asp:PlaceHolder>
<asp:PlaceHolder id="PlaceHolder2" runat="server" visible='<%# !(Convert.ToInt32(Eval("NbrOrders"))>=Config.MAX_ENQUIRY_SALES)%>'>
<div>My FalseHtml Here</div>
</asp:PlaceHolder>
Run Code Online (Sandbox Code Playgroud)
我不确定你可以为条件绑定添加括号,我知道这样做的唯一方法是使用内联语句,如下所示:
<%# Convert.ToInt32(Eval("NbrOrders"))>=Config.MAX_ENQUIRY_SALES) ? Eval("IfTrueValue") : Eval("IfFalseValue") %>
Run Code Online (Sandbox Code Playgroud)
@Robin Day的答案的问题是,如果您有数据绑定子项,则可能会或可能不会根据您呈现的当前状态提供数据,以下代码将失败.如果您有一个复杂的对象图,有时很难在可空的数据绑定代码周围进行操作.
例如,考虑:
<asp:PlaceHolder runat="server" Visible="<%# VisibleCondition() %>">
<%# ((string)null).ToString("c") %> //an object that may have null data
//given the visible condition
</asp:PlaceHolder>
Run Code Online (Sandbox Code Playgroud)
如果VisibleCondition()返回false,则仍然会调用子控件,DataBind()这可能导致NullReferenceException上面的示例中的a .
这是一个更好的方法,恕我直言:
public class ConditionalPlaceHolder : PlaceHolder
{
protected override void DataBindChildren()
{
if( this.Visible )
{
base.DataBindChildren();
}
}
}
Run Code Online (Sandbox Code Playgroud)
并按以下方式使用:
<web:ConditionalPlaceHolder runat="server" Visible="<%# VisibleCondition1() %>">
//whatever databound code
<%# ((string)notNullGivenVisibleCondition1).ToString() %>
<p>But could be given visible condition 2</p>
</web:ConditionalPlaceHolder>
<web:ConditionalPlaceHolder runat="server" Visible="<%# VisibleCondition2() %>">
//whatever databound code
<%# ((string)notNullGivenVisibleCondition2).ToString() %>
<p>But could be given visible condition 1</p>
</web:ConditionalPlaceHolder>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14345 次 |
| 最近记录: |