我可以更改Html.DropDownListFor生成的html名称吗?

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

IDI使用以下代码创建下拉列表:

 @for (var index = 0; index < Model.AdminSummaries.Count(); index++) 
            { 
            <div class="rep_tr0"> 
                <div class="rep_td0"> 
                    @Html.DropDownListFor(x => Model.AdminSummaries[index].Status, AdminStatusReference.GetAdminStatusOptions()) 
                </div> 
Run Code Online (Sandbox Code Playgroud)

代码创建以下内容:

<select id="AdminSummaries_2__Status" name="AdminSummaries[2].Status">
   <option value="1">Released</option>
   <option value="2">Review</option>
   <option value="3">New</option>
</select> 
<select id="AdminSummaries_3__Status" name="AdminSummaries[3].Status">
   <option value="1">Released</option>
   <option value="2">Review</option>
   <option value="3">New</option>
</select> 
Run Code Online (Sandbox Code Playgroud)

有什么方法可以更改它,以便创建ID "Status_2","Status_3"等.

hmz*_*hmz 74

就像@Anar在评论中说的那样;

实际上,您可以使用与id相同的方式更改name属性,但使用"Name"而不是"name".令人惊讶的是它有效.

 @Html.DropDownListFor(x => Model.AdminSummaries[index].Status, 
AdminStatusReference.GetAdminStatusOptions(), 
new { id = string.Format("Status_{0}",index ), Name = "GiveName" });
Run Code Online (Sandbox Code Playgroud)

  • 检查mvc5 - 对我好! (5认同)
  • 我发现这只是添加了一个属性"Name"而没有设置属性"name" (3认同)
  • 刚刚检查过,它对我来说很好,而且在MVC4中也是如此 (2认同)

nua*_*der 9

有时HTML帮助程序不帮助.DropDownListForFor编码可以快速实现复杂,最后它只是渲染HTML所以有时最好去老学校

<select name="myname" class="dropdownlist" id="myid">
    @foreach (SelectListItem item in Model.SomeSelectList) {
        if (item.Value ==  Model.theValue) {
            <option value="@(item.Value)" selected="selected">@item.Text</option>
        } else {
            <option value="@(item.Value)">@item.Text</option>
        }
    }
</select>
Run Code Online (Sandbox Code Playgroud)


Arb*_*ter 5

您可以像设置任何HTML属性一样设置/更改ID(但不是我找到的名称).

@Html.DropDownListFor(x => Model.AdminSummaries[index].Status, AdminStatusReference.GetAdminStatusOptions(), new { id = string.Format("Status_{0}",index ) });
Run Code Online (Sandbox Code Playgroud)

  • @ core24实际上,您可以使用与id相同的方式更改name属性,但不要使用Name,而是使用Name.令人惊讶的是它有效. (13认同)

mth*_*len 5

对于那些想知道为什么这行不通的人,整件事是区分大小写的,并且在它前面需要一个@。

因此,这有效:

new { @id = "myID", @Name = "myName", @Value = "myValue", @class = "form-control", @onchange = "javascript:DoSomething(this.value);" }
Run Code Online (Sandbox Code Playgroud)

这不是(请注意中的小写字母“ n” @name

new { @id = "myID", @name = "myName", @Value = "myValue", @class = "form-control", @onchange = "javascript:DoSomething(this.value);" }
Run Code Online (Sandbox Code Playgroud)