ASP中继器的条件

时间:2010-06-09 13:35:00

标签: c# asp.net

我试图在我的ASP转发器标签中添加一个条件。我正在创建一个表,其中一个td项是一个链接。问题是我需要在检查转发器容器中的变量中的值时创建链接。这是我的代码:

<td><%#((VWApp.Code.TrackDM)Container.DataItem).CdNo%></td>
<td><%#((VWApp.Code.TrackDM)Container.DataItem).ShippingNo%></td>

现在我需要检查ShippingNo的值,而不是显示它需要显示链接。我试着写这样一个if条件:

if(((VWApp.Code.TrackDM)Container.DataItem).ShippingNo. .. )
{
// do processing and generate a link that needs to displayed
}

但是在尝试这样做时我遇到了错误。任何人都可以指导我做正确的方法吗?

任何想法和建议都受到高度赞赏。

3 个答案:

答案 0 :(得分:3)

<asp:Hyperlink>内使用<td>,并将其Visible属性绑定到将检查ShippingNo的表达式,如果它代表有效链接,则返回true。

答案 1 :(得分:1)

您可以随时使用不使用转发器的老式路线,而是使用内联代码,您可以使用所需的任何代码。类似的东西:

<% foreach (SomeObject obj in MyObjectCollection) { %>
  <td>
    <% if (obj.SomeProperty == something) { %>
      <a href="<%= /* build link */ %>">Click Me</a>
    <% } else { %>
      Some Text
    <% } %>
  </td>
<% } %>

这是经典的ASP做事方式,但我发现它在某些情况下效果更好。有时,使用真实代码执行操作更容易,而不是在Repeater或GridView的边界内工作。

答案 2 :(得分:0)

将您的逻辑封装在User Control中,并将其所需的参数传递给显示决策:

<uc:linkdisplay id="linkdisplay1" runat="server" 
      CdNo='<%#((VWApp.Code.TrackDM)Container.DataItem).CdNo %>' 
      ShippingNo='<%#((VWApp.Code.TrackDM)Container.DataItem).ShippingNo%>' />