有人可以告诉我为什么我不能拥有与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对象中的“model”属性重命名为另一个名称,它也可以运行:
public class FormViewModel
{
public string AnotherModel { get; set; }
}
return $http.post("/Api/Form/Create/Save/DraftForm/", {"AnotherModel":"test"});
答案 0 :(得分:0)
我误解了数据是如何发布到控制器的。
控制器正在
{"Model", "test"},
但是期待
{ "model":
{"Model", "test"}
}
基本上,传递给控制器的数据应该具有与控制器参数匹配的属性名称,并且该属性应该是与控制器中参数对象匹配的对象。