在C#asp.net中进行评估
我在放置在绑定到对象数据源的数据列表中的内容占位符中有动态内容。 问题是我需要检查EVAL的值。 这是代码:
<a href="https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/"> https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/
<a href="https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/ ">https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/
<asp:Label ID="DescLabel" runat="server" Text='https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/' />
<asp:Label ID="DetailsLabel" runat="server" Text='https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/' />
<asp:Label ID="RptIDLabel" runat="server" Text='https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/' />
<asp:Label ID="LinksLabel" runat="server" Text='https://stackoverflow.com/questions/7307556/eval-in-c-sharp-asp-net/' />
我想说
我需要检查是在aspx页面而不是aspx.cs页面! 如何进行检查?
你可以检查如下:
<%# Eval("VenderLink") == "somestring" ? "p %>
你可以这样做:
<%# (Eval("UserName") == "Test 1") ? "no.png" : "yes.gif" %>
试试这个,
<%# string.Compare(Eval("RptID").ToString(), "SomeString") == 0 ? Eval("RptID") : "Nothing" %>
你需要用单引号包装你的表达式,否则它是无效的SGML。 解析器认为该属性在第二个"
。
<%# Eval("Vendor") %>
您不能在绑定上下文中使用IF
构造,只能使用绑定表达式。 您可以始终挂钩ItemDataBound
并将您的逻辑放在服务器端(或将其移动到代码隐藏中的方法)。
protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { var descLabel= e.Item.FindControl("RptIDLabel") as Label; var data = (MyDataType)e.Item.DataItem; if (data.RptID == "SomeString") { descLabel.Text = "Pass"; } ... }
Eval("RptID")
它是一个函数,所以你不能做Eval("rtpid")
=“something”;
如果你需要编写逻辑,你总是可以在后面的代码中创建一个受保护的或公共的函数,它将返回你需要的字符串。
你可以像这样调用这个函数
<%# TransformString(Eval("RptID")) %>
和后面的代码中的函数
protected string TransformString(object rptid) { //some code goes here }