在我的控制器中使用ViewModel的模型属性时遇到问题

时间:2015-07-13 18:40:46

标签: c# asp.net-mvc model-view-controller

我创建了一个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/

但它似乎并没有帮助

2 个答案:

答案 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之前