尽管作者给出了解决该问题的方法。我想找出一个正确的答案,为什么这不起作用。
我无法访问原始代码,但这是我的(所以我可以回答以下问题):
// 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)
如果签名中没有添加组件VM 的操作调用上述相同的代码,则表单会正确呈现。
public PartialViewResult IngredientSearch([ModelBinder(typeof(SearchOptionsBinder))] SearchOptions sessionSO)
任何人都可以指出这种奇怪(至少对我而言)行为的原因吗?谢谢!