これは部分的に見たMVC3フォームのフォローアップです
著者は問題の回避策を示しましたが。なぜこれが機能しないのか、正しい答えを見つけたいと思います。
私は元のコードにアクセスできませんが、ここに私のものがあります(次の質問に答えることができます):
// main view (which is partial too)
@foreach (AddingComponentVM sc in Model)
{
@Html.Partial("_SearchIngredientUpdate", sc);
}
//partial view
@using (Ajax.BeginForm("IngredientSearchUpdate", new { controller = "Recipe" }, ajxOpt, new { id = "addingWidgetForm" + Model.IngredientID }))
{
@Html.TextBoxFor(model => model.IngredientID)
@Model.IngredientID
}
@Model.IngredientIDには適切な値が含まれています。ただし、テキストボックスにはコントローラーに送信されたモデルの値が含まれており(原文のまま)、各フォームで明らかに同じです。
[AjaxOnly]
public JsonResult IngredientSearchUpdate(
AddingComponentVM dataIn,
[ModelBinder(typeof(SearchOptionsBinder))] SearchOptions sessionSO)
署名にAddingComponentVMがないアクションが上記の同じコードを呼び出す場合、フォームは正しくレンダリングされます。
public PartialViewResult IngredientSearch([ModelBinder(typeof(SearchOptionsBinder))] SearchOptions sessionSO)
誰かが私にこの奇妙な(少なくとも私にとっては)行動の原因を指摘することができますか?ありがとう!