2016-04-29 10 views
7

Wie Kendo MVC Helfer des CRUD mit JSON als content

@(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").Data("...") 
 
     .Type(HttpVerbs.Post); 
 
    }); 
 
    }) 
 
    .OptionLabel(new { optionLabel = Resources.Wording.SelectOne, ServiceID = 0, Rate = 0, Code = "" }) 
 
)

Ich habe einen Kendo machen, die Dropdownliste anstelle von JQuery Art und Weise mit Hilfe von HTML-Helfer Art und Weise initialisiert.

Gibt es trotzdem die Postanforderung an/Service/GetServiceRepository mit JSON als ContentType anstelle der Standard application/x-www-form-urlencoded?

+0

Plz stellen einige Details für Ihren Pomlem und die Daten zur Verfügung, die Sie verwenden. – Rajdeep

+0

Ich musste den 'contentType' nie explizit setzen und verwende immer JSON. Sind Sie sicher, dass es nicht an Ihrem Service-Ende liegt? –

Antwort

2

Diese Kendo MVC Helfer unterstützt nicht den Inhalt Typ eingestellt werden. Es wurde entwickelt, um mit den MVC-Controllern und der Kendo MVC-Server-API zu arbeiten, sodass nicht alle Anforderungsoptionen eingestellt werden können. Sie sollten die JavaScript-Initialisierung verwenden, um alle Optionen festlegen zu können. Es ist möglich, die Optionen über JavaScript zu ändern, nachdem der Helfer bereits initialisiert wurde, z.

$(function() { 
    var grid = $("#grid").data("kendoGrid"); 
    grid.dataSource.transport.options.update.contentType = "application/json"; 
    //override the parameterMap function in order to convert the data to JSON 
    grid.dataSource.transport.parameterMap = function (options, type) { 
     return kendo.stringify(options); 
    } 
}); 
1

Sie können die ContentType-Eigenschaft mithilfe der Custom fließenden Methode von DataSource festlegen. Ich benutze Version 2016.2.504.

Die Nutzung ist:

@(Html.Kendo().DropDownListFor(model => model.ServiceID) 
    .DataTextField("Text") 
    .DataValueField("Value") 
    .DataSource(d => d.Custom() 
    .Transport(c => c.Read(
     read => read.ContentType("xml/json") 
      .Data("...") 
      .Type(HttpVerbs.Post) 
      .Action("GetServiceRepository", "Service"))) 
)) 
+0

Es klingt gültig, aber ich verwende 2015 Q1-Version ... – shole

+0

Sie haben nicht ausgeführt, welche Kendo-Version Sie verwendet haben. Ich denke, das ist die Antwort, nach der Sie suchen. Eventuell werden Sie die Version 2016 wegen Bugfixes verwenden. – fduman