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の後、すべてのプロパティはまだnullです)?

私の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 に答える