我有以下代码+ 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>
可能出现什么问题?
答案 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") %>
希望有所帮助!