Asp.net-Mvc-4
使用 Razor 在 MVC4 中更改 html.editorfor 助手的 id 屬性
我查看了一些與此相關的各種答案,但所有答案都是針對 mvc3 或不針對 Razor。
我有一個頁面,在部分視圖中有多個表單,用於編輯不同的模型。但是,這些模型中的大多數都有一個“名稱”欄位。我希望能夠指定具有特定 id 的 editorfor,如下所示:
<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>我嘗試了其他各種方法,但還沒有找到令人滿意的方法來處理這個問題。我似乎有兩個選擇:
1)使用普通的html助手手動創建表單並在控制器中建構模型
2)重命名模型中的所有欄位以適應格式
這些對我來說都不令人興奮,所以我希望有一個替代方案,但我擔心 id 是在將表單綁定到模型時使用的。
將您的助手從 EditorFor 更改
EditorFor為TextBoxFor沒有重載來覆蓋 html 屬性改變這個
@Html.EditorFor(model => model.Name, new {id = "PersonName"})對此
@Html.TextBoxFor(model => model.Name, new {id = "PersonName"})
我意識到這有點晚了,但我自己也遇到了這個問題……我認為“必須有一種方法來使用 EditorFor 並且仍然覆蓋 ID”……有。執行以下操作,您的輸入將包含您喜歡的任何 ID 和名稱。
@Html.EditorFor(model => model.myField, null, "txtMyField")希望這會有所幫助,並希望它也可以幫助其他人。
注意:據我了解,通常不這樣做的原因是為了避免其他動態創建的控制項 ID 和名稱發生衝突。