Это следовать до MVC3 form in partial viewформа в частичном - правильный ответ нужен
Хотя автор дал обходной путь к этой проблеме. Я хотел бы найти правильный ответ, почему это не работает.
У меня нет доступа к первоначальному коду, но вот мое (так что я могу ответить на следующие вопросы):
// 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 содержит правильное значение. Но текстовое поле содержит значение модели, отправленной контроллеру (sic!), И, очевидно, одинаково для каждой формы.
[AjaxOnly]
public JsonResult IngredientSearchUpdate(
AddingComponentVM dataIn,
[ModelBinder(typeof(SearchOptionsBinder))] SearchOptions sessionSO)
Если действие без AddingComponentVM в сигнатуре вызывает тот же код выше, формы отображаются корректно.
public PartialViewResult IngredientSearch([ModelBinder(typeof(SearchOptionsBinder))] SearchOptions sessionSO)
Любой может указать мне на причину этого странного (по крайней мере для меня) поведения? Благодаря!
Я предпочитаю использовать EditorTemplates для отображения таких форм, а не частичных представлений. Частицы склонны действовать иногда странно (хотя, если вы знаете, как это работает, это логично) и имеют неожиданное поведение. – Styxxy
Очень хорошее и интересное предложение. Я все еще хотел бы знать, почему он работает так, как работает! Спасибо –
Я реализовал это с помощью EditorTemplates и точно так же происходит. Существует столкновение с данными, отправленными с POST. По-видимому, так работает TextBoxFor (и т. Д.). Они сначала ищут значения в ViewData, ViewBag, а затем в модели. Все еще нужна помощь в этом. –