没有HTML帮助程序的可见控件/输出

时间:2014-05-30 12:12:21

标签: c# html asp.net-mvc html-helper

我有以下代码+ HTML,不呈现任何控件: 我正在尝试使用HTML帮助程序在网页中放置控件,但这不会给我输出控件。

<div id="PaymentTypes" name="PaymentTypes" style="display: block">
  <table width="730" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>
        <%
          if(Model.PayCompanyDTO.IsMultipleOption==false)
          {
            switch (Model.SinglePaymentTypeAttribute)
            {
              case ("Full"): %>            
                <p><asp:Label ID="lblFull" Visible="true" runat="server">Amount to pay:</asp:Label></p>
                <%Html.Label("lblFull", "1000");
                break;

              case("Partial"):%>
                <% break;%>

              <%case("DD"):%>

                <label id="DDLPay" title="Payment Amounts">Choose Amount: </label>
                <% Html.DropDownList("AmountListDDL",Model.AmountList);
                break;

              default:
                break;                                     
             }
           }
           else
           {
             if(Model.PayCompanyDTO.AllPaymentOptions.Contains("Full"))
             {
               Html.Label("LblRdoFull","Full");%>
                 <input type="radio" name="rdoPay" id="RadioFull" value="Full" title="Amount to Pay" onclick="PaymentTypeChanged()" />  Full

             <%  }

             if(Model.PayCompanyDTO.AllPaymentOptions.Contains("DD"))
             {
               Html.Label("LblRdoDD","Choose Amount");%>
               <input type="radio" name="rdoPay" id="RadioDD" value="DD" onclick="PaymentTypeChanged()" /> DD
             <% }
           }%>
         </td>                                       
       </tr>                                    
     </table>
   </div>

   <div id="DivFull" name="DivFull" style="display:none">
     <% Html.Label("Amount", "1000");%> Amount
   </div>

   <div id="DivDD" name="DivDD" style="display:none">
     Choose Amount:
     <%   Html.DropDownList("AmountListDDL", Model.AmountList);%>
   </div>

可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

这不会在页面上呈现标签:

<% Html.Label("Amount", "1000"); %>

以下任何一种情况都可以呈现:

<%= Html.Label("Amount", "1000") %>
<%: Html.Label("Amount", "1000") %>
<% Writer.Write(Html.Label("Amount", "1000")); %>

不同之处在于<% ... %>只是执行代码(没有在页面中呈现任何内容),而<%= ... %><%: ... %>正在呈现表达式的结果,有效地调用{{1} } 为了你。您需要注意Writer.Write<%=之间还有一个细微的区别,后者会自动对其内容进行html编码(当您不使用<%:帮助程序时特别重要{ {1}})。见this question

为了呈现您的控件:

  • 您需要更新这样的代码(将逻辑和渲染语句混合到一个Html.块中):

    Html.Label
  • 您可以拆分这些代码块,因此逻辑位于<% ... %>块内,渲染语句位于<% ... if(Model.PayCompanyDTO.AllPaymentOptions.Contains("Full")) { Html.Label("LblRdoFull","Full");%> 个块内。请注意,您需要删除Html.Label表达式末尾的分号。例如,上面的代码如下所示:

    <% ... %>

或者:

  • 保持您的观点并替换:

    <%: ... %>
  • <%
    
    ...
    
    if(Model.PayCompanyDTO.AllPaymentOptions.Contains("Full"))
    {
    %>
        <%: Html.Label("LblRdoFull","Full") %>
    

希望有所帮助!