我可以在以下代码中传递if语句吗?如果没有,还有其他选择吗?

时间:2011-08-29 19:26:42

标签: c# asp.net

<%#String.Format("~/storefront.aspx?CatalogID={0}&ProductID={1}", Eval("CatalogID"), Eval("ProductID"))%>

我要做的是:

 NavigateUrl='<%#String.Format("~/storefront.aspx?CatalogID={0}&ProductID={1}",Eval("CatalogID"), (Eval("CatalogID")=="856" ? Eval("ProductID") : Eval("CustItem")))%>

我正在尝试链接到页面中的项目..我已经为除了catalogid 856中的项目之外的每个项目完成了此操作... url看起来像:storefront.aspx?CatalogID = 856&amp; ProductID = AVE05418那个例子是目录856中的一个,问题是,在url中传递的productid实际上是一个名为CustItem的变量所以我试图在目录为856时在ProductID的位置传递CustItem

谢谢

3 个答案:

答案 0 :(得分:6)

您可以尝试这样的事情:

Eval("CatalogID") == 856 ? Eval("CustItem") : Eval("ProductID")

修改

NavigateUrl='<%#String.Format("~/storefront.aspx?CatalogID={0}&ProductID={1}",Eval("CatalogID"), (Eval("CatalogID").ToString() == "856" ? Eval("CustItem") : Eval("ProductID")))%>'

答案 1 :(得分:3)

您可以使用ternary operator

Eval((CatalogID==856) ? "CustItem" : "ProductID")

比这更好的方法是修复已经进入数据库的不良数据,这样你就可以避免这种丑陋。

答案 2 :(得分:1)

  

任何人都可以建议如何处理给定的情况吗?

我会在数据库层修复它。数据完全错误。

如果您不得不破解它,请不要更改服务器外部可见的任何内容(例如Web服务接口或URL)。否则,有人可以利用您的解决方法来破坏您的数据。

在您的网址中允许Eval只是为了解决问题。