$ http.post到MVC控制器有一个属性/参数confilct

时间:2016-09-02 19:24:45

标签: angularjs asp.net-mvc http-post

有人可以告诉我为什么我不能拥有与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"});

1 个答案:

答案 0 :(得分:0)

我误解了数据是如何发布到控制器的。

控制器正在

{"Model", "test"}, 

但是期待

{ "model":
    {"Model", "test"}
}

基本上,传递给控制器​​的数据应该具有与控制器参数匹配的属性名称,并且该属性应该是与控制器中参数对象匹配的对象。