2016-04-29 68 views
7

如何讓使用JSON劍道MVC傭工的CRUD爲contentType中

@(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 = "" }) 
 
)

我有劍道DROPDOWNLIST使用HTML幫助的方式,而不是JQuery的方式,也初始化。

有無論如何使用JSON作爲contentType而不是默認application/x-www-form-urlencoded向/ Service/GetServiceRepository發出發佈請求嗎?

+0

Plz爲您的pomlem和您使用的數據提供了一些詳細信息。 – Rajdeep

+0

我從來沒有明確設置'contentType',我總是使用JSON。你確定這不是你的服務端? –

回答

2

這劍道MVC助手不支持設置內容類型。它旨在與MVC控制器和Kendo MVC服務器API一起工作,因此並非所有的請求選項都可以設置。您應該使用JavaScript初始化爲了能夠設置所有選項。在助手已經被初始化之後,可以通過JavaScript修改選項,例如,

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

您可以使用數據源的自定義流利的方法來設置ContentType屬性。我使用版本2016.2.504。

用法是:

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

這聽起來有效,但我使用的是2015年第一季度版本... – shole

+0

您沒有詳細說明您使用的是哪種Kendo版本。我認爲這是你正在尋找的答案。最終你會使用2016版本,因爲缺陷修復。 – fduman