我正在尝试设置字段ID,如下所示:
@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
但这导致以下情况,似乎我的ID未设置:
<input type="text" value="334" name="item.Order" id="item_Order" class="text-box single-line">
有没有人知道我做错了什么。我检查了EditorFor的允许格式,并在google上查看了示例,但我看不到任何符合我需要的内容。
答案 0 :(得分:31)
你应该改为
@Html.TextBoxFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
@Html.EditorFor
的第二个参数用于视图数据,而不是用于html属性
答案 1 :(得分:18)
@Html.EditorFor(x => x.Order, null, string.Format("Order_{0}", Model.Row))
答案 2 :(得分:5)
我知道这个问题很老了,但我需要做的就是以下几点:
@Html.EditorFor(modelItem => item.EndDate,
new { htmlAttributes = new { @class = "form-control", @id = @endID } })
您可以为其提供您想要/需要的任何类别或ID。我之前在页面中也有这个,为每个项目创建一个不同的ID:
string endID = "end-" + @item.ID;
希望这有助于将来。
答案 3 :(得分:3)
您是否尝试为x.Order
创建编辑器模板?
在你的编辑器模板上有这个:
<input type="text" id="@ViewData["id"]">
并在您的视图页面上使用它:
@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
答案 4 :(得分:2)
我不确定在使用强类型助手时是否可以覆盖ID属性。但您可以使用其他非模型类型:
@Html.Editor(string.Format("Order_{0}", Model.Row), Model.Order)
这将使用第一个参数作为ID,第二个参数作为默认值。
答案 5 :(得分:0)
如果要使用EditorFor,可以执行以下操作:
@Html.EditorFor(model => model.Order, new { htmlAttributes = new { @id = "YOUR_ID_HERE"})
对于上面的示例,它是:
@Html.EditorFor(model => model.Order, new { htmlAttributes = new { @id = $"Order_{0}" } })
Svetlosav的答案看起来不错,但这会破坏您的数据绑定。如果使用该答案,请检查模型是否按预期填充,而不是使用默认值(null,false,0等)填充。