在我的操作中,我使用具有以下属性的InsertPerson
模型:
pulbic class InsertPerson
{
[Required]
public string Name{get;set;}
}
我有一个传递到我的存储库的DTO模型:
public class PersonDto
{
public int Id{get;set;}
public string Name{get;set;}
public string LastName{get;set;}
}
我的行动:
[HttpPost]
public ActionResult Create(InsertPerson insertPerson)
{
if(ModelState.IsValid){
var personDto = new PersonDto();
UpdateModel(personDto)
//UpdateModel(personDto, "insertPerson") I've tried this too
}
}
为什么它不起作用(在UpdateModel之后所有属性仍为null)?
有没有办法使用personDto
更新我的UpdateModel
?
我知道AutoMapper,但我认为在控制器中使用它很无聊。
我的观点:
@model Help_Desk.ViewModel.InsertPersonViewModel
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.InsertPerson.Name)
<button type="submit">Save</button>
}
和我的viewmodel:
public class InsertPersonViewModel
{
public InsertPerson InsertPerson{ get; set; }
}
答案 0 :(得分:1)
好的,现在我们看到了问题。缺少的信息是您使用的是视图模型,而视图模型创建了一个必须在UpdateModel中考虑的各种“容器”。
正在发生的事情是UpdateModel试图在personDto对象中逐字更新“InsertPerson.Name”。由于这不存在,它不起作用。
您可以通过指定UpdateModel(personDto, "InsertPerson")