2016-05-11 9 views
1

Ich muss in der Lage sein, diese ListBoxFor() abhängig von der Überprüfung Status zu deaktivieren. Obwohl der folgende Code funktioniert, werden alle Listenelemente angezeigt.Wie deaktiviere ich meine @ Html.ListBoxFor()

Was wäre die Syntax, um es zu deaktivieren, aber nur so, dass es "2 Elemente ausgewählt" zeigt?

+1

Beachten Sie, dass die Deaktivierung eines HTML-Elements nicht verhindert, dass jemand eine POST-Anfrage mit seinem Namen durchführt. Überprüfen Sie auch diese Serverseite. – CodeCaster

Antwort

0

Es scheint, die Antwort ist den Html.helper Befehl HiddenFor() zu verwenden, wie dies

@if (Model.IsUnderReview) 
{ 
    //You then need to generate a hidden input for each value in SelectedRoles, as it's an array 
    @Html.HiddenFor(m => m.SelectedRoles) 
} 
else 
{ 
    @Html.ListBoxFor(x => x.SelectedRoles, filetypes, new { @class = "multiselectFileTypes" , id = "staticFieldM_" + Model.ID}) 
} 

Durch einen versteckten Eingang für jeden SelectedRole Artikel Erstellen Sie dann die ganze Liste deaktivieren.

1

Die Inline-Bedingungsprüfung für den Parameter htmlAttributes ist nicht möglich.

Dies sollte funktionieren.

@using (Html.BeginForm()) 
{ 
    <label>Select something </label> 
    if (!Model.IsUnderReview) 
    { 
    @Html.ListBoxFor(m => m.ListOptions, filetypes, new { @class = "multiselectFileTypes"}) 
    } 
    else 
    { 
    @Html.ListBoxFor(m => m.ListOptions, filetypes, new { @disabled = "disabled" }) 
    } 
} 
+0

Vielen Dank für Ihre Antwort, es funktioniert, abgesehen von der Tatsache, dass es die gesamte Liste der Elemente anzeigt. Es muss etwas in der Syntax geben, das dies beheben würde. – user616076

+0

Deaktiviert bedeutet nicht "Alle Elemente ausblenden". Es bedeutet, zeigen Sie die Elemente, aber in einer Deaktivierung ** "Look" ** – Shyju

Verwandte Themen