我试图在用户控件(.ascx)中的某些条件下显示/隐藏标签。我尝试了以下方法,但无法实现我想要的输出。我在这里缺少什么?
方法 - 1:使用jQuery
.cshtml:
<fieldset id="delivery-threshold-fieldset">
<legend>Delivery Threshold</legend>
<div style="display: none" id="delivery-threshold-fieldset-message">
<%= Html.Label("Please uncheck ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE option under DELIVERY to enable this section.") %>
</div>
</fieldset>
的.js:
if (isThirdPartyDeliveryProviderAvailable.toString().toLowerCase() === 'true') {
$("#delivery-threshold-fieldset-message").show();
} else {
$("#delivery-threshold-fieldset-message").hide();
}
输出:
方法 - 2:如果条件。
<fieldset id="delivery-threshold-fieldset">
<legend>Delivery Threshold</legend>
<% if (this.Model.IsThirdPartyDeliveryProviderAvailable)
{ %>
<%= Html.Label("Please uncheck ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE option under DELIVERY to enable this section.") %>
<% } %>
</fieldset>
输出:
在方法-2中,调试时条件得到满足,但是当我在浏览器上检查元素时,根本看不到标签。不确定为什么?
答案 0 :(得分:0)
我认为第二种方法不起作用的原因是因为您使用Html.Label
在MSDN上说
返回属性的HTML标签元素和属性名称 由指定的表达式表示。
所以我认为你的字符串包含。,这可能会让帮助者认为它是表达式。
相反,请尝试使用第二个重载,例如:
Html.Label("", "Please uncheck ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE option under DELIVERY to enable this section.")
但在我看来,既然你没有将这个标签与任何输入相关联,为什么不只是创建简单的html标签而不是使用帮助器:
<label>"Please uncheck ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE option under DELIVERY to enable this section."</label>
答案 1 :(得分:0)
我在方法 - 1(.cshtml)中做了一些小改动,以获得理想的结果。
<fieldset id="delivery-threshold-fieldset">
<legend>Delivery Threshold</legend>
<div style="display: none" id="delivery-threshold-fieldset-message">
<h2>
<%= Html.LabelFor(m => m.IsThirdPartyDeliveryProviderAvailable, "Please uncheck \"ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE\" option under \"DELIVERY\" to enable this section") %>
</h2>
</div>
</fieldset>
我使用 Html.LabelFor
而不是 Html.Label