2016-03-29 3 views
0

Ich versuche, Label unter bestimmten Bedingung in meinem Benutzersteuerelement (ASCX) ein-/ausblenden. Ich habe die folgenden Ansätze versucht, konnte aber nicht die gewünschte Leistung erzielen. Was fehlt mir hier?Zeige/Verstecke Label unter Bedingung in Web-Benutzersteuerelement in Mvc4

Approach - 1: Mit 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(); 
} 

Ausgang:

enter image description here

Annäherung - 2: Wenn Bedingung.

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

Ausgang:

enter image description here

In Ansatz - 2 ist Bedingung erfüllt immer beim Debuggen, aber wenn ich das Element auf Browser inspizieren ich gar nicht sehen Etikett. Nicht sicher warum?

Antwort

0

Ich denke, der Grund, warum zweite Ansatz nicht funktioniert, ist, weil die Art und Weise Sie Html.Label verwenden

Auf MSDN sagt es

ein HTML-Label-Element Kosten und die Eigenschaftsnamen der Immobilie , die durch den angegebenen Ausdruck dargestellt wird.

Also ich denke, Ihre Zeichenfolge enthält ., was dazu führen kann, dass der Helfer denkt, dass es Ausdruck ist.

Stattdessen versuchen, die zweite Überlast verwenden wie:

Html.Label("", "Please uncheck ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE option under DELIVERY to enable this section.") 

Aber meiner Meinung nach, da Sie dieses Label nicht mit jedem Eingang assoziieren, warum nicht nur einfaches HTML-Label anstelle der Verwendung von Helfern erstellen:

<label>"Please uncheck ENABLE THIRD PARTY DELIVERY PROVIDERS FOR THIS STORE option under DELIVERY to enable this section."</label> 
+0

Sie für Ihren Vorschlag danken. Ich habe mein gewünschtes Ergebnis, ich habe meine Antwort mit der Logik gepostet. – CSharper

0

ich habe eine kleine Änderung in meinem Approach - 1 (.cshtml) für gewünschte Ergebnis.

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

Statt Html.Label benutzte ich Html.LabelFor