在mvc4中的Web用户控件中显示/隐藏标签

时间:2016-03-29 14:35:06

标签: jquery asp.net-mvc-4

我试图在用户控件(.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();
}

输出:

enter image description here

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

输出:

enter image description here

在方法-2中,调试时条件得到满足,但是当我在浏览器上检查元素时,根本看不到标签。不确定为什么?

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