0

在我的操作中,我使用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 之后所有属性仍然为空)?

有没有办法更新我的personDto使用UpdateModel

我知道 AutoMapper,但我认为在控制器中使用它很无聊。


我的观点:

@model Help_Desk.ViewModel.InsertPersonViewModel

@using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.InsertPerson.Name)

    <button type="submit">Save</button>
}

和我的视图模型:

public class InsertPersonViewModel
{
    public InsertPerson InsertPerson{ get; set; }
}
4

1 回答 1

1

好的,现在我们看到了问题所在。缺少的信息是您正在使用视图模型,并且视图模型创建了一个必须在 UpdateModel 中说明的“容器”。

发生的事情是 UpdateModel 正试图从字面上更新您的 personDto 对象中的“InsertPerson.Name”。因为那不存在,所以它不起作用。

您可以通过指定来解决此问题UpdateModel(personDto, "InsertPerson")

于 2012-10-04T17:44:54.660 回答