我正在处理我的第一个 MVC 项目,我想看看是否有更好的方法来做到这一点。我很确定有。
我正在构建一个审计应用程序。每个审计都有一个问题列表,每个问题都有一个可供选择的选项列表。问题和选项可以改变。因此,我必须动态构建问题表和带有问题选项的下拉菜单。
下面是我如何在 Controller 中创建 SelectLists
foreach (var r in employeeAuditData.Audit.AuditResults)
{
ViewData["Result" + r.AuditQuestionID] =
new SelectList(r.AuditQuestion.QuestionOptions, "QuestionOptionID", "OptionText", r.QuestionOption);
}
这是我的 View 代码
foreach (var r in Model.Audit.AuditResults.OrderBy(r => r.AuditQuestion.Ordinal).ToList())
{
<tr>
<td>@r.AuditQuestion.QuestionText</td>
<td>@Html.DropDownList("Result" + r.AuditQuestionID, "(Select)")</td>
</tr>
}
这可行,但对 ViewData 键使用串联似乎是一种时髦的方法。有没有更好的办法?
最佳答案
制作一个 ViewModel 怎么样?
class AuditResultSelectList
{
int QuestionId { get; set;}
SelectList QuestionOptions { get; set;}
}
然后在你的 Controller 中:
List<AuditResultSelectList> list = new List<AuditResultSelectList>();
foreach (var r in employeeAuditData.Audit.AuditResults)
{
AuditResultSelectList a = new AuditResultSelectList()
{
QuestionId = r.AuditQuestionID,
QuestionOptions = new SelectList(r.AuditQuestion.QuestionOptions, "QuestionOptionID", "OptionText", r.QuestionOption)
}
list.Add(a);
}
ViewData["QuestionSelectLists"] = list;
然后您的 View 可以使用以下方法拉出列表:
var x = (List<AuditResultSelectList>) ViewData["QuestionSelectLists"];
关于c# - 下拉列表的动态列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918070/