MVC 5 @ Html.EditorFor覆盖@id

时间:2018-07-13 18:03:16

标签: c# asp.net-mvc

我在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。 有没有办法做到这一点?

谢谢

4 个答案:

答案 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 })