首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC多重DropDownListFor

MVC多重DropDownListFor
EN

Stack Overflow用户
提问于 2015-12-17 10:17:54
回答 1查看 847关注 0票数 0

我从一个项目列表中创建了一个表视图,并且在每一行中都有一个DropDownListFor来从另一个列表中选择值。我想用相应的代码映射每个名字。如果某些名称已被映射,如何使用所选的值显示一些DropdownLists?谢谢。

代码语言:javascript
复制
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Name)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Code)
    </th>
</tr>

@foreach(var item in Model)
 {
    <tr>
        <td>
            @Html.DisplayFor(x => item.Name)
        </td>
        <td>
            @Html.DropDownListFor(x => item.Code, (SelectList)ViewBag.SelectCodes)
        </td>
    </tr>
    }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 11:05:57

首先,如果这个视图是提交给控制器方法的表单的一部分,那么您需要对模型使用for循环或EditorTemplateforeach循环生成与模型无关的重复name属性,并生成无效的id属性。

不幸的是,在循环中呈现控件时,@Html.DropDownListFor()的行为与其他帮助程序略有不同,在每次迭代中生成一个新的SelectList并设置Selected属性是必要的。使用for循环,您的视图必须是(模型必须是IList<T>)

代码语言:javascript
复制
@for(int i = 0; i < Model.Count; i++)
{
    @Html.DropDownListFor(m => m[i].Code, new SelectList(ViewBag.SelectCodes, "Value", "Text", Model[i].Code))
}

注意,这是基于ViewBag.SelectCodes已经是一个SelectList,这并不是必要的。它可能类似于new SelectList(ViewBag.SelectCodes, "ID", "Name", Model[i].Code),其中SelectCodes是包含属性IDName的对象集合。

另一个更好的选择是为您的模型使用自定义EditorTemplate。假设您的模型是MyModel.cs,那么在/Views/Shared/EditorTemplates/MyModel.cshtml中创建一个部分视图(模板的名称必须与类名匹配)

代码语言:javascript
复制
@model MyModel
<tr>
    <td>@Html.DisplayFor(m => m.Name)</td>
    <td>@Html.DropDownListFor(m => m.Code, (SelectList)ViewData["SelectCodes"])</td>
</tr>

然后在主视图中

代码语言:javascript
复制
@model IEnumerable<MyModel>
....
<table>
    <thead>
        ....
    </thead>
    <tbody>
        @Html.EditorFor(m => m, new { SelectCodes = ViewBag.SelectCodes })
    </tbody>
</table>

EditorFor()方法使用AdditionalViewDataSelectList传递给模板,该方法将为集合中的每个项正确生成html,而不必生成新的SelectList

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34332019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档