mvc -部分发布页面-模型绑定失败
本文关键字:模型 绑定 失败 布页面 -部 mvc | 更新日期: 2023-09-27 18:01:58
我试图发布页面的一部分,并将其绑定到控制器上的视图模型。我的SearchVM
编辑器模板:
@Html.TextBoxFor(model => model.TestText, new { @class = "form-control ",
@placeholder = "TEXT" , @id="test" })
<input type="submit" value="Submit" />
Index.cshtml:
@using (Html.BeginForm("Search", "Pencil", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.EditorFor(model => model.SearchVM);
}
控制器:
public ActionResult Search(SearchVM vm)
{
// ...
}
当我在testText
文本框上输入一些东西并点击提交时,我达到了搜索动作,但vm.TestText
是空的,我无法将表单字段从编辑器模板绑定到视图模型。任何想法?
这是因为作为@model
传递给视图的类包装了SearchVM
类,并且当您调用@Html.EditorFor(model => model.SearchVM)
时,它呈现带有前缀SearchVM
的输入:
<input id="SearchVM_TestText" name="SearchVM.TestText" value="" ... />
反过来,当发送回控制器时,ModelBinder
将无法将其反序列化为SearchVM
你可以使用EditorFor
重载:
@Html.EditorFor(model => model.SearchVM, "_SearchVM", "");
其中_SearchVM
是编辑器模板的名称。传递""
作为htmlFieldName
参数将删除输入上不需要的SearchVM
前缀。