始める前に、次の質問を見てきました。
エディター テンプレートの <List> 項目で asp.net mvc モデル バインディングが失敗する
私は次のように見えるモデルを持っています:
public class PartnerListModel
{
public List<PartnersModel> Partners { get; set; }
public PartnerListModel()
{
Partners = new List<PartnersModel>();
}
}
そして、私の PartnersModel は次のようになります。
public class PartnersModel
{
public int ID { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
PartnersListModel をビューに渡します。これは次のようになります。
using (Html.BeginForm("Update", "Partners", FormMethod.Post))
{
@Html.EditorFor(m => m.Partners)
<input type="submit" value="Submit Changes"/>
}
最後に、私のエディター テンプレートは次のようになります。
@model AdminWebsite.Models.Partners.PartnersModel
<div>
<span>
@Html.DisplayFor(m => m.Name)
</span>
<span>
@Html.EditorFor(m => m.IsActive)
</span>
@Html.HiddenFor(m => m.ID)
@Html.HiddenFor(m => m.Name)
</div>
私のコントローラーのアクションはそのままで、コードは実際にこのアクションをヒットすることができます:
public ActionResult Update(PartnerListModel partners)
モデル内のリストのカウントが 0 になるのはなぜですか? 私の例が Stack Overflow で受け入れられている回答と異なる理由が見つかりません。返されたデータ値がリストに追加されない理由を説明するものはありますか?
Chrome の開発者ツールを使用して、次のようなリストがあることを確認できました。
- パートナー[0].IsActive = true
- パートナー[0].IsActive = false
- Partners[0].Name = "こんにちは"
- パートナー[0].ID = 1
- Partners[1].IsActive = false など
何か案は?前もって感謝します。