2017-10-09 2 views
1

Ich verwende die Kendo-Benutzeroberfläche für ASP.NET MVC. Ich habe mich gefragt, ob es eine Möglichkeit gibt, den HtmlAttributes einer DropDownList mit Razor eine bedingte Logik hinzuzufügen. Wie Sie an meinem Beispiel sehen können, setze ich den Wert gemäß ob mein Modell Id hat oder nicht.Clientseitige Validierung "erforderlich" mit bedingter Logik zu Kendo DropDownList von der ASP.NET MVC-Benutzeroberfläche Api

. Ich habe mich gefragt, ob es eine Syntax für meine Frage gibt. Möglicherweise etwas wie das

@(Html.Kendo().DatePickerFor(model => model.RequestedDate) 
    .Name("RequestedDate") 
    .Format("dd/MM/yyyy") 
    .HtmlAttributes(new { style = "width:100%" if(Model.DocumentId){ required = "required" }) 
    .Value(Model.DocumentId != null ? Model.RequestedDate : DateTime.Today) 
) 

ich es wissen können, auf dem Databound-Ereignis möglicherweise des Elements durch Javascript getan werden, aber meine Frage ist, ob es einen Weg gibt, diese Seite in meinem Rasierer zu tun.

Antwort

1

habe ich upvoted @ChrisC antworte, weil er mir geholfen hat, es so zu sehen, wie ich es brauchte. Die Art, wie ich es gehandhabt habe, ist so:

@(Html.Kendo().DatePickerFor(model => model.RequestedDate) 
    .Name("RequestedDate").Format("dd/MM/yyyy") 
    .HtmlAttributes(Model.DocumentId == null ? (object) new { style = "width:100%" } : new { style = "width:100%", required = "required" }) 
    .Value(Model.DocumentId != null ? Model.RequestedDate : DateTime.Today) 
) 
1

Razor läuft im Wesentlichen nur C# in der Ansicht. Was Sie hier versuchen, ist das Wrappen einer if-Anweisung innerhalb der Grenzen eines Objekts, d. H. Es wird nicht kompiliert.

Das Beste, was Sie tun können, ist den Objektwert aus dem HtmlAttributes Verfahren und Spaltung zu bewegen, dass mit der if Anweisung statt:

@{ 
object myAttributes = null; 

    if(Model.DocumentId) { 
     myAttributes = new { style = "width:100%", required = "required" } 
    } 
    else { 
     myAttributes = new { style = "width:100%" } 
    } 
} 

und dann

@(Html.Kendo().DatePickerFor(model => model.RequestedDate) 
    .Name("RequestedDate") 
    .Format("dd/MM/yyyy") 
    .HtmlAttributes(myAttributes) 
    .Value(Model.DocumentId != null ? Model.RequestedDate : DateTime.Today) 
) 
Verwandte Themen