我正在开发我的第一个MVC项目,我想看看是否有更好的方法来做到这一点。我很确定有。
我正在构建一个审核应用程序。每个审核都有一个问题列表,每个问题都有一个可供选择的选项列表。问题和选项可能会改变。因此,我必须使用问题的选项动态构建问题表和下拉列表。
以下是我在控制器中创建SelectLists的方法
foreach (var r in employeeAuditData.Audit.AuditResults)
{
ViewData["Result" + r.AuditQuestionID] =
new SelectList(r.AuditQuestion.QuestionOptions, "QuestionOptionID", "OptionText", r.QuestionOption);
}
这是我的观点代码
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键的连接似乎是一种时髦的方法。还有更好的方法吗?
答案 0 :(得分:0)
制作ViewModel怎么样?
class AuditResultSelectList
{
int QuestionId { get; set;}
SelectList QuestionOptions { get; set;}
}
然后在你的控制器中:
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;
然后您的视图可以使用以下方式删除列表:
var x = (List<AuditResultSelectList>) ViewData["QuestionSelectLists"];