Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在我的控制器中使用ViewModel的模型属性时出现问题_C#_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 在我的控制器中使用ViewModel的模型属性时出现问题

C# 在我的控制器中使用ViewModel的模型属性时出现问题,c#,asp.net-mvc,model-view-controller,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(ViewMo

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

我在一篇博客文章中发现,似乎有人遇到了这个问题:


但它似乎真的毫无帮助

您的ajax调用应该如下所示:

var model = {loginVM:{YOUR OBJECT}, personVM:{YOUR OBJECT}};
$.post(url,{vm:model});

我解决了这个问题。在controller方法中,我必须使用[BindPrefix=personVM]Person-personModel[BindPrefix=loginVM]Login-loginModel作为参数,就像我在开篇文章中发布的文章一样。但是,在我将BindPrefix=Person和BindPrefix=Login而不是personVM和loginVM设置为GET之前,您是否尝试过ActionResult AddPerson[FromUrl]ViewModel vm,如果是POST:ActionResult AddPerson[FromBody]ViewModel vm,我认为[HttpPost]应该位于方法之上,而不是vm!你能添加你的CSHTML代码吗,这样我们就可以看看是否有任何错误的绑定了?@annemartijn我有点害怕发布所有的代码,因为这是一个工作项目,但我通过做一些类似@Html.LabelFormodel=>model.personVM.first_name,first name:或@Html.TextBoxFormodel=>model.loginVM.login_name,new{{maxlength=20}的事情来绑定对于模型的所有属性,我都解决了问题。在controller方法中,我必须使用[BindPrefix=personVM]Person-personModel[BindPrefix=loginVM]Login-loginModel作为参数,就像我在开篇文章中发布的文章一样。然而,在我将BindPrefix=Person和BindPrefix=Login替换为personVM和loginVM@annemartijn之前