如果使用eval与if else?

时间:2016-10-11 10:13:48

标签: c# sql asp.net webforms

enter image description here

我有两个产品页面。如果multipleProduct为false,则必须重定向到ProductDetails-1.aspx,否则必须重定向ProductDetails-2.aspx页面。

我有 编译错误:<%else

 <asp:Repeater ID="rpProducts" runat="server">
   <ItemTemplate>
      if <%# Eval("MultipleProduct").ToString() == "No")
       {%>
         <li>
           <i class="fa fa-angle-right"></i>&nbsp;
           <a href="ProductDetails-1.aspx?ProductID=<%# Eval("ID").ToString()%>" /><%# Eval("ProductName").ToString() %></a>
         </li>
    <% }%> 
    <% else
       { %>
         <li>
           <i class="fa fa-angle-right"></i>&nbsp;
           <a href="ProductDetails-2.aspx?ProductID=<%# Eval("ID").ToString()%>" /><%# Eval("ProductName").ToString() %></a>
         </li>
       <%} %>                                      
  </ItemTemplate>
</asp:Repeater>

1 个答案:

答案 0 :(得分:1)

您的代码有点混乱,尝试其他方法,更易读,更少重复的代码,更不容易出错,在您的代码中创建方法

在aspx类中创建一个受保护的方法,以获取产品的url。

protected string GetProductUrl(string multipleProduct, int ID)
{
   string url = multipleProduct == "No" ? "ProductDetails-1.aspx" : "ProductDetails-2.aspx";

   return url + "?ProductID=" + ID; 
}

在你的aspx文件中用下一个替换你的代码。

<asp:Repeater ID="rpProducts" runat="server">
     <ItemTemplate>
         <li>
             <i class="fa fa-angle-right"></i>&nbsp;
             <a href="<%# GetProductUrl(Eval("MultipleProduct").ToString(), (int) Eval("ID")) %>" >
                  <%# Eval("ProductName").ToString() %>
            </a>
         </li>
    </ItemTemplate>
</asp:Repeater>