2016-05-04 20 views
2

Kendo MVC DropDownListFor bindet nicht Wert ausgewählt

@(Html.Kendo().DropDownListFor(model => model.ServiceID) 
 
    .OptionLabelTemplate("#=optionLabel#") 
 
    .ValueTemplate("#=Code#(#=Rate#) - #=Description#") 
 
    .Template("#=Code#(#=Rate#) - #=Description#") 
 
    .DataTextField("Code") 
 
    .DataValueField("ServiceID") 
 
    .DataSource(d => 
 
    { 
 
    d.Read(read => 
 
    { 
 
     read.Action("GetServiceRepository", "Service").Type(HttpVerbs.Post); 
 
    }); 
 

 
    }) 
 
    .Events(e => e.Change("onWorkOrderJobServiceChange")) 
 
    .HtmlAttributes(new { required = "required" }) 
 
    .OptionLabel(new { optionLabel = Resources.Wording.SelectOne, ServiceID = 0, Rate = 0, Code = "", Description = "" }) 
 
)

Ich habe ein Dropdown wie oben zu modellieren, und möchte den ausgewählten Wert an Modell ServiceID Feld binden (die vom Typ int)

Unabhängig davon, welches Element ich auswähle, ist das Feld ServiceID immer Null! Es ist nicht einmal von Nullable Typ int?!

Warum passiert das und wie kann ich erreichen, was ich versuche?

Antwort

2

Kendo DropDownList hat ValuePrimitive. Standardmäßig ist es falsch, und das ausgewählte Element gibt das Paar Text und Wert zurück.

@(Html.Kendo().DropDownListFor(model => model.ServiceID) 
    .ValuePrimitive(true) 
    .... 
+0

Danke für die Lösung, und es funktioniert! Nur eine Sache verwirrt mich, was bedeutet .DataValueField() bedeutet? Ich dachte, es definiert, welches Feld als der ausgewählte Wert verwendet wird, aber scheint der ausgewählte Wert immer (Text, Wert) Paar? – shole

+0

Wenn wir DataValueField setzen, sollten wir im Idealfall einen Wert anstelle eines Paares erhalten. Leider nicht. Ich stimme zu, dass es mich auch zuerst verwirrt hat. – Win

Verwandte Themen