我從零開始創建了一個VS 2012 MVC API項目,加載了Nuget「WebApiContrib.Formatting.Jsonp」,添加了一個路由,格式化程序,並嘗試將參數作爲序列化的JSON作爲JSONP請求發送。如何識別或訪問控制器中的這些參數?如何在JSONP中綁定MVC API參數獲取?
WebApiConfig:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{format}",
defaults: new { id = RouteParameter.Optional,
format = RouteParameter.Optional }
);
config.Formatters.Insert(0, new JsonpMediaTypeFormatter());
API方法:
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
JQuery的:
$.ajax({
type: 'GET',
url: '/api/Values',
data: JSON.stringify({ "message": "\"Hello World\"" }),
contentType: "application/json; charset=utf-8",
dataType: 'jsonp',
success: function (json) {
console.dir(json.sites);
},
error: function (e) {
console.log(e.message);
}
});
我已經試過修改API方法包括:
Get([FromUri] string value)
Get([FromBody] string value)
Get(CustomClass stuff)
Get([FromUri] CustomClass stuff)
Get([FromBody] CustomClass stuff)
凡CustomClass被定義爲:
public class CustomClass
{
public string message { get; set; }
}
到目前爲止,這些都不產生任何東西,但空的參數。我應該如何連接查詢字符串中發佈的對象的這些參數?
編輯:
我可以通過修改JQuery的AJAX是絕招吧:
data: {"value":JSON.stringify({ "message": "\"Hello World\"" })}
的,我可以去字符串化的[FromUri] string value
拿到我的強類型的對象。
不過,我期待數據聯編程序將參數解碼爲強類型對象。什麼技術使這發生?
目前,確切的解決方案不太確定,但嘗試更改API參數名稱爲Id。即Get([FromUri]字符串ID)。請參閱它是否有效。可能聽起來沒有語境,但只是試一試。 – Shubh 2013-04-29 06:19:19