3

編集された可変長リストを取得するために Html.BeginCollectionItem ヘルパーを使用します。ネストされていないプロパティ (string Member.Info、int Member.MotherID など) では機能しますが、ネストされたプロパティはすべて null (Mother Member.Mother など) です...

メンバー クラス:

 public class Member : Person
 {
    [Key] 
    public int MemberID { get; set; }
    ...
    public string Info { get; set; }

    public int MotherID { get; set; }

    public virtual Mother Mother { get; set; }
 }

ネストされたマザー クラス:

 public class Mother : Person
 {
    [Key]
    public int MotherID { get; set; }

    public virtual ICollection<Member> Children { get; set; }

    public Mother()
    {
        Children = new List<Member>();
    }
}

コントローラーのスニペット:

 [HttpPost]
 public ActionResult GoSend(IEnumerable<Member> me) // Mother in 'me' is null
 {...}

インデックス.cshtml:

 @model IEnumerable<Directory_MVC.Models.Member>
 ...
 @using (Html.BeginForm("GoSend", "Members", FormMethod.Post))
 {
    @foreach (var item in Model)
    {
        Html.RenderPartial("EditorRow", item);       
    }
 }

EditorRow.cshtml:

 @model Directory_MVC.Models.Member
 ...
 @using (Html.BeginCollectionItem("me"))
 {
      @Html.HiddenFor(x => x.Info)
      @Html.HiddenFor(x => x.MotherID)
      @Html.HiddenFor(x => x.Mother)
      @Html.HiddenFor(x => x.Mother.Email)
 }

その壊れたマザー入力に対して生成された HTML は次のとおりです。

 <input id="me_88c3c30f-3aa7-4729-9879-368f01073080__Mother" name="me[88c3c30f-3aa7-4729-9879-368f01073080].Mother" type="hidden" value="System.Data.Entity.DynamicProxies.Mother_5D771F511FE55BBA8F7C7D21A0054616D2EB9278EDCA1D59DFDCB1B68EA45920" />

MotherID 入力を機能させるために生成された HTML は次のとおりです。

 <input data-val="true" data-val-number="The field MotherID must be a number." data-val-required="The MotherID field is required." id="me_88c3c30f-3aa7-4729-9879-368f01073080__MotherID" name="me[88c3c30f-3aa7-4729-9879-368f01073080].MotherID" type="hidden" value="1" />

私は何を間違っていますか?そのマザー オブジェクトをシリアル化し、Html.BeginCollectionItem を介してそのコントローラーで取得することさえ可能ですか?

4

0 に答える 0