即使签名与EditorFor完全匹配,Razor也无法编译
本文关键字:Razor 编译 EditorFor | 更新日期: 2023-09-27 18:06:10
我正在使用MVC 5.2,我在一个视图中多次使用的部分视图中工作,以绑定到我的视图模型中的对象列表。
为了使它正确绑定,我的理解是html对象的名称需要看起来像Model[x]. property。我能为EditorFor找到的唯一签名是
,它允许我在保持添加html属性的能力的同时做到这一点。public static MvcHtmlString EditorFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
string templateName,
string htmlFieldName,
object additionalViewData
)
我的问题是,如果我试图在htmlFieldName字段连接任何东西,它告诉我有无效的参数。如果我使用一个没有连接的普通字符串,工作得很好。我已经尝试了所有类型的连接,下面是我尝试过的一个例子。
@Html.EditorFor(model => model.Name,"", @String.Format("Contacts[{0}].Name",ViewBag.Id), new { htmlAttributes = new { @class = "form-control" } })
HtmlHelper'不包含'EditorFor'和最佳扩展方法重载' editoreextensions的定义。EditorFor(HtmlHelper, Expression>, string, string, object)
我是否试图以错误的方式完成此任务?是否有更好的方法来绑定对象列表?此外,我如何维护的东西,如regex验证,它似乎不再工作,一旦我改变了名称。
转换动态ViewBag.Id
满足Razor编译器,错误消失。
@Html.EditorFor(model => model.Name,
"",
String.Format("Contacts[{0}].Name", ViewBag.Id as string),
new { htmlAttributes = new { @class = "form-control" } }
)