2
这是一个后续行动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 2012-08-03 15:03:10
非常好和有趣的建议。我仍然想知道为什么它的工作方式起作用!谢谢 – 2012-08-03 15:13:41
我用EditorTemplates实现了这一点,并发生了完全相同的事情。与POST一起发送的数据发生冲突。显然这就是TextBoxFor(等)的工作原理。他们首先在ViewData,ViewBag和模型中搜索值。仍然需要帮助。 – 2012-08-04 22:16:42