如果我使用MVC控制器,我会获得该键的属性名称。如果我使用WebApi控制器,我会将“parameterName.property”作为密钥的名称。
public class SomeClass
{
[StringLength(12, MinimumLength = 12)]
public string Blah { get; set; }
}
在MVC控制器中
[HttpPost]
public ActionResult Create(SomeClass collection)
{
// ModelState.Keys.ElementAt(0) == "Blah"
}
在WebApiController中(传递一些请求体,如“blah = 1”)
public HttpResponseMessage Post(SomeClass someClass1)
{
// ModelState.Keys.ElementAt(0) == "someClass1.Blah"
}
所以我没有获得与BlaC一致的“Blah”,而是获得了“someClass1.blah”。为什么会出现这种不一致?我缺少一个设置吗?这是RC中的错误吗?这两个项目都是在VS2012 RC中从零开始创建的。
答案 0 :(得分:0)
这看起来像RC代码中的一个错误。但是,Web API中的模型绑定与ASP.NET MVC模型绑定是分开的,因此如果添加了一些自定义 MVC 模型绑定代码,则它将不适用于Web API控制器。这个good blog post提供了一些关于Web API和API之间差异的好信息。 MVC模型绑定。
答案 1 :(得分:0)