没有可见的控制/输出与HTML帮助

本文关键字:输出 HTML 帮助 控制 | 更新日期: 2023-09-27 18:05:49

我有以下代码+ HTML,不呈现任何控件:我正在尝试使用HTML helper在网页中放置控件,但这给了我没有控件的输出。

<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>

可能的问题是什么?

没有可见的控制/输出与HTML帮助

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

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

以下任意选项都可以显示:

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

不同之处在于,<% ... %>只是执行代码(没有渲染任何东西到页面),而<%= ... %><%: ... %>是渲染表达式的结果,有效地调用Writer.Write为您。<%=<%:之间也有一个微妙的区别,您需要注意,后者将自动对其内容进行html编码(当您不使用Html. helper(如Html.Label)时尤其重要)。看看这个问题。

为了呈现你的控件:

  • 你需要这样更新代码(混合逻辑和渲染语句到一个单独的<% ... %>块):

    <%
    ...
    if(Model.PayCompanyDTO.AllPaymentOptions.Contains("Full"))
    {
        Html.Label("LblRdoFull","Full");%>
    
  • 您可以拆分这些代码块,因此逻辑在<% ... %>块内,呈现语句在<%: ... %>块内。请注意,您需要删除Html末尾的分号。标签的表情。例如,上面的代码看起来像这样:

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

另外:

  • keep your view as you have it并替换:

    <%
    ...
    Html.Label("LblRdoFull","Full"); %>
    
  • <%
    ...
    Writer.Write(Html.Label("LblRdoFull","Full")); %>
    

希望有帮助!