[英]No Visible controls/output with HTML helpers
我有以下代码+无法呈现任何控件的HTML:我试图使用HTML Helpers将控件放置在网页中,但这没有提供任何控件输出。
<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.Label("Amount", "1000"); %>
符合以下条件的任何地方:
<%= Html.Label("Amount", "1000") %>
<%: Html.Label("Amount", "1000") %>
<% Writer.Write(Html.Label("Amount", "1000")); %>
区别在于<% ... %>
仅执行代码(不向页面中渲染任何内容),而<%= ... %>
和<%: ... %>
则有效地渲染表达式的结果调用Writer.Write
为您服务。 还有之间的细微差别<%=
和<%:
当你使用的不是特别重要的,你需要知道的,以后会自动HTML编码内容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") %>
或者:
保持视图不变,并替换:
<% ... Html.Label("LblRdoFull","Full"); %>
同
<% ... Writer.Write(Html.Label("LblRdoFull","Full")); %>
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.