Asp.net-Mvc-4

使用 Razor 在 MVC4 中更改 html.editorfor 助手的 id 屬性

  • December 30, 2016

我查看了一些與此相關的各種答案,但所有答案都是針對 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 更改EditorForTextBoxFor沒有重載來覆蓋 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 和名稱發生衝突。

引用自:https://stackoverflow.com/questions/16847209