親ページのビューモデルと同じ名前のプロパティがモデルに含まれている、強く型付けされた部分ビューがあります。何らかの理由で、レンダリングエンジンは、期待値ではなく、親ビューモデルの値をレンダリングしています(少なくとも私が期待する値です!)
親ページビューモデルの抽出:
public class ParentPageViewModel
{
public int Id { get; set; } // problem property
...
public IEnumerable<ChildViewModel> Children { get; set; }
}
子ページビューモデルの抽出:
public class ChildViewModel
{
public int Id { get; set; } // problem property
...
}
親ページの抽出(Razor):
@model ParentPageViewModel
...
@foreach (var item in Model.Children)
{
@Html.Partial("MyPartialView", item)
}
...
部分ビュー抽出:
@model ChildViewModel
...
<form ...>
@Html.HiddenFor(m => m.Id) // problem here - get ParentPageViewModel.ID not ChildViewModel.Id
</form>
...
したがって、基本的にレンダリングされた出力では、非表示フィールドには、部分ビューに渡される値ではなく、親ビューモデル要素の値が含まれます。@ChildViewModel.Id@の名前を@ChildViewModel.ChildId@のような名前に変更すると期待どおりに機能するため、これは間違いなく名前が原因です。興味深いことに、デバッガーでビューモデルの値を調べると、正しい値が表示されます。間違っているのはレンダリングされた出力だけです。
これを回避する方法、または私がやろうとしていることを行う「正しい」方法はありますか(ajax検証/テーブル行への更新の投稿のためにテーブルにミニフォームをレンダリングしています)
ありがとう、
ティム