【问题标题】:how to use If statement in aspx page with Bind/Eval method如何使用 Bind/Eval 方法在 aspx 页面中使用 If 语句
【发布时间】:2018-01-25 09:06:14
【问题描述】:

我写了以下代码:

<% if (Eval("ZoneName").ToString().ToLower().Equals("lahore"))
{%>
    <asp:HyperLink ID="hlShipmentDetail" runat="server"></asp:HyperLink>
<%    
}
%>

但它会产生这个异常:

“System.InvalidOperationException”类型的异常发生在 System.Web.dll 但未在用户代码中处理

附加信息:数据绑定方法,例如 Eval()、XPath()、 并且 Bind() 只能在数据绑定控件的上下文中使用。

有人可以帮忙吗?

【问题讨论】:

  • 根据消息,问题不是if 语句,而是Eval。您似乎不在数据绑定控件中,那么您希望“ZoneName”变量究竟来自哪里?或许告诉我们您的实际意图并提供更多关于变量的背景信息,或许我们可以帮助您找到实现目标的正确方法。
  • 感谢@ADyson 的回复。 ZoneName”来自数据库。
  • 不,这不包括它 - 您不能直接在 aspx 页面中使用数据库列。我的意思是,它来自你的 C# 代码的什么地方?
  • 我正在使用中继器控制。
  • 然后请在中继器的上下文中显示您的代码,并显示您如何对中继器进行数据绑定。谢谢。

标签: c# asp.net


【解决方案1】:

在函数中移动您的程序逻辑 - 这是一个示例

在 aspx 页面上的转发器上写:

&lt;%#GetShipmentDetail(Container.DataItem)%&gt;

以及背后的代码

protected string GetShipmentDetail(object oItem)
{
   var cZoneName = DataBinder.Eval(oItem, "ZoneName").ToString();

   if(cZoneName == "whatever")
      return "nothing";
   else
      return "something";

}

【讨论】:

  • 你要么在返回的字符串值中使用 HTML(坏主意),要么在其他情况下(例如,当只返回 URL 并处理网页中的 HTML 包装时)你没有办法不提供链接(这是 OP 在他们的代码 sn-p 中想要做的)
  • @Flater 您还有其他想法吗?我认为返回 html 并不是什么坏主意。在中继器中替代,他可以使用自定义控件来拥有他需要的所有逻辑,并将其放在中继器上 - 但它是别的东西
猜你喜欢
  • 2011-08-01
  • 2013-06-08
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多