我在ASP.net页面中有一个@ Html.EditorFor生成和使用的下拉列表,我的问题是我无法向该字段分配ID。我在2个不同位置使用相同的控件,我想使用模型中的index / id来切换/交换值。此处是dic
<div class="editor-field">
@Html.EditorFor(m => m.state, new { @id = "state" + Model.Index })
</div>
呈现的html是
<div class="editor-field">
<label for="EteProvince">State</label>
<select id= "EteProvince" name="EteProvince" style="width:220px"
class="valid">
</select>
</div>
我想将model.index添加到select的ID。 有没有办法做到这一点?
谢谢
答案 0 :(得分:0)
对于所有Asp.Net MVC方法,您可以设置一个viewData对象,该对象将其他属性值设置为生成的HTML:
@Html.EditorFor(
modelItem => item.YourProperty,
new { htmlAttributes = new { @id="custom_id" } })
有关更多信息,请检查this。
答案 1 :(得分:0)
这应该使您走上正确的轨道:
@Html.LabelFor(model => model.YourItem, "State: ", new { @id = "MyID"})
@Html.EditorFor(model => model.YourItem, new { @id = "MyID2"})
这将使您可以像普通一样使用CSS设置标签/编辑器的样式。希望这会有所帮助!
答案 2 :(得分:0)
<div class="editor-field">
@Html.EditorFor(p => p.item.property, new { htmlAttributes = new { @id="itemId" }})
</div>
答案 3 :(得分:0)
您可以使用DropDownList
代替EdiorFor
,例如:
@Html.DropDownList("state" + Model.Index, new SelectList(Model.States, "", ""))
也可以在使用DropDownListFor
时覆盖ID:
@Html.DropDownListFor(m => m.state, new SelectList(Model.States, "", ""), new { id = "state" + Model.Index })