我从头开始创建了一个 VS 2012 MVC API 项目,加载了 Nuget“WebApiContrib.Formatting.Jsonp”,添加了一个路由格式化程序,并尝试将参数作为序列化 JSON 作为 JSONP 请求发送。如何识别或访问控制器中的这些参数?
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());
接口方法:
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
查询:
$.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; }
}
到目前为止,这些都没有为参数产生任何东西,但 null 。我应该如何从查询字符串中发布的对象连接这些参数?
编辑:
我可以通过将 JQuery ajax 修改为:
data: {"value":JSON.stringify({ "message": "\"Hello World\"" })}
为此,我可以取消字符串化[FromUri] string value
并获取我的强类型对象。
不过,我希望数据绑定器将参数反序列化为强类型对象。什么技术使这种情况发生?