我创建了一个ViewModel,它有两个我的模型作为属性:
public class ViewModel
{
public Login loginVM;
public Person personVM;
}
Login和Person对象的属性在用户输入的视图中填充,但当我将ViewModel发送回我的控制器并尝试使用Person / Login属性时,它表示它们返回为null:
[HttpPost]
public ActionResult AddPerson(ViewModel vm)
{
DataBase da = new DataBase();
da.addLogin(vm.loginVM);
da.AddPerson(vm.personVM);
}
由于某种原因,vm.loginVM和vm.personVM都为null。
我发现了一个博客帖子,似乎有人遇到过这个问题:https://garfbradazweb.wordpress.com/2012/03/08/mvc3-viewmodel-binding-to-controllerpost-methods/
但它似乎并没有帮助
答案 0 :(得分:0)
你的ajax调用应该如下所示:
var model = {loginVM:{YOUR OBJECT}, personVM:{YOUR OBJECT}};
$.post(url,{vm:model});
答案 1 :(得分:0)
我弄明白了这个问题。在控制器方法中我不得不使用([Bind(Prefix =“personVM”)] Person personModel,[Bind(Prefix =“loginVM”)]登录loginModel)作为参数,就像我在开篇文章中发布的文章一样。但是,在我使用Bind(Prefix =“Person”)和Bind(Prefix =“Login”)而不是personVM和loginVM之前