如何使用Html.EditorFor和MVC3设置id

Sam*_*tar 24 asp.net-mvc asp.net-mvc-3

我想设置一个字段ID如下:

@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
Run Code Online (Sandbox Code Playgroud)

但这会产生以下结果,似乎我的id未被设置:

<input type="text" value="334" name="item.Order" id="item_Order" class="text-box single-line">
Run Code Online (Sandbox Code Playgroud)

有谁知道我做错了什么.我检查了EditorFor的允许格式,并在google上查看了示例,但我看不到任何符合我需要的内容.

doh*_*ivu 31

你应该改为

@Html.TextBoxFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
Run Code Online (Sandbox Code Playgroud)

第二个参数@Html.EditorFor是视图数据,而不是html属性

  • 但原来的问题呢?如果您想/需要使用EditorFor - 如何设置ID? (25认同)
  • JonK,看到Svetoslav Petrov的回答降低了.我认为这应该是公认的答案. (5认同)

Sve*_*rov 18

@Html.EditorFor(x => x.Order, null, string.Format("Order_{0}", Model.Row))
Run Code Online (Sandbox Code Playgroud)

  • 这应该是接受的答案,因为它回答了实际问的问题,而不是改变它. (9认同)

Tre*_*man 7

我知道这个问题很老了,但我需要做的就是以下几点:

@Html.EditorFor(modelItem => item.EndDate, 
                new { htmlAttributes = new { @class = "form-control", @id = @endID } })
Run Code Online (Sandbox Code Playgroud)

您可以为其提供您想要/需要的任何类别或ID.我之前在页面中也有这个,为每个项目创建一个不同的ID:

string endID = "end-" + @item.ID;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助将来的某个人.


Ace*_*ark 5

您是否尝试过为自己创建编辑器模板x.Order

在您的编辑器模板上有此:

<input type="text" id="@ViewData["id"]">
Run Code Online (Sandbox Code Playgroud)

并在您的视图页面上使用它:

@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
Run Code Online (Sandbox Code Playgroud)