使用Razor更改MVC4中html.editorfor帮助程序的id属性

Bea*_*ear 5 razor asp.net-mvc-4

我已经查看了一些与此相关的各种答案,但所有这些都是针对mzc3而不是针对Razor.

我有一个页面,在部分视图中有多个表单,用于编辑不同的模型.但是,大多数模型都有一个"名称"字段.我希望能够指定具有特定ID的编辑器:

    <div class="editor-label">
        @Html.LabelFor(model => model.Name)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Name,  new {id = "PersonName"})
        @Html.ValidationMessageFor(model => model.Name)
    </div>
Run Code Online (Sandbox Code Playgroud)

我尝试了其他各种各样的东西,但没有找到一个满意的方法来处理这个问题.我似乎有两个选择:

1)使用普通的html助手手动创建表单,并在控制器中构建模型

2)重命名模型中的所有字段以适合格式

这些都不令我兴奋所以我希望有一个替代方案,但我担心id是将表单绑定到模型时使用的内容.

小智 26

我意识到这有点晚了但我自己也遇到了这个问题...我想"必须有一种方法来使用EditorFor并仍然覆盖ID"......有.执行以下操作,您的输入具有您喜欢的ID和名称.

@Html.EditorFor(model => model.myField, null, "txtMyField")
Run Code Online (Sandbox Code Playgroud)

希望这有所帮助,并希望它也能帮助其他人.

注意:根据我的理解,通常不会这样做的原因是为了避免其他动态创建的控件ID和名称发生冲突.

  • 并且可以使用EditorFor @ Html.EditorFor中的以下对象语法添加html属性(model => model.FieldName,null,"newIdAndName",new {htmlAttributes = new {@class ="form-control"}}) (5认同)
  • 注意:这也将改变元素的`name`属性. (2认同)

Jor*_*rge 19

改变从你的助手EditorForTextBoxFor的EditorFor,没有超载重写HTML属性

改变这个

@Html.EditorFor(model => model.Name,  new {id = "PersonName"})
Run Code Online (Sandbox Code Playgroud)

对此

@Html.TextBoxFor(model => model.Name,  new {id = "PersonName"})
Run Code Online (Sandbox Code Playgroud)

  • DateTime值是否有类似的模拟?我找不到一个,而EditorFor创建了一个非常好的小日期/时间选择器.尝试使用我现在可以做的其他值.编辑:这完美地工作我标记为已接受但我希望你可能有一个日期时间的解决方案仍然:) (2认同)