【发布时间】:2016-09-02 19:24:44
【问题描述】:
谁能告诉我为什么我不能有一个与 MVC 控制器参数同名的 JSON 属性?我确定我在某处犯了一个愚蠢的错误,但这是场景:
我将 $http.post 提交给 MVC 控制器
$http.post 方法:
return $http.post("/Api/Form/Create/Save/DraftForm/", {"Model":"test"});
MVC 模型
public class FormViewModel
{
public string Model { get; set; }
}
MVC 控制器
[HttpPost, Route("Api/Form/Create/Save/DraftForm")
public ActionResult Create_Save_DraftForm(FormViewModel model)
{
....
}
当 someObj 到达控制器时,它是空的。
但是,如果我将控制器“model”中的参数名称更改为“viewModel”之类的名称,它可以正常工作。
[HttpPost, Route("Api/Form/Create/Save/DraftForm")
public ActionResult Create_Save_DraftForm(FormViewModel viewModel)
{
....
}
正如 Shyju 提到的,我还可以将 JSON 对象中的“模型”属性重命名为另一个名称,它也可以正常工作:
public class FormViewModel
{
public string AnotherModel { get; set; }
}
return $http.post("/Api/Form/Create/Save/DraftForm/", {"AnotherModel":"test"});
【问题讨论】:
-
可能是模型活页夹中的错误!将您的属性重命名为特定名称,它将起作用(例如:CarModel)
-
到目前为止,这是我的解决方案。它要么是模型绑定器中的错误,要么是我不正确地使用模型绑定器。如果非要猜的话,我会说是后者。
-
有人提到我可能想尝试为对象添加另一个级别,但我没有任何运气。
-
更正,添加另一个级别就可以了。我会发布答案。
标签: angularjs asp.net-mvc http-post