凭借我的 ASP.NET WebForms 经验,这是我的第一个 MVC 项目。
这是我认为机制不允许的问题,但我可能是错的。
在 aDropDownListFor
中拥有 a@foreach
并不是那么微不足道。
首先,下拉菜单没有选择我传递给它的值(m => question.Answer
)——注意下图中它们都显示了No Answer
,因为它没有选择我加载它的正确值。
其次,由于它们最终都具有相同的表单字段名称,控制器如何将它们分离回相应的 List<> 中?
我一直在看这个一个小时并搜索了一个类似的例子,但我找不到任何东西。
什么是不是硬编码黑客或解决方法的好解决方案?
模型:
public List<SelectListItem> PossibleAnswers
{
get
{
return new List<SelectListItem>()
{
new SelectListItem() { Text = "No Answer", Value = "0" },
new SelectListItem() { Text = "Very Bad", Value = "1" },
new SelectListItem() { Text = "Bad", Value = "2" },
new SelectListItem() { Text = "Average", Value = "3" },
new SelectListItem() { Text = "Good", Value = "4" },
new SelectListItem() { Text = "Very Good", Value = "5" }
};
}
}
public enum SurveyAnswer
{
NoAnswer,
VeryBad,
Bad,
Average,
Good,
VeryGood
}
public class SurveyQuestionClass
{
public int ID { get; set; }
public string Question { get; set; }
public SurveyAnswer Answer { get; set; }
}
public List<SurveyQuestionClass> QuestionsAnswers { get; set; }
看法:
@foreach (var question in Model.QuestionsAnswers)
{
<tr>
<td>
@Html.DropDownListFor(m => question.Answer, Model.PossibleAnswers, new { style = "font-size: small;" })
</td>
<td>
@Html.Raw(question.Question)
</td>
</tr>
}
它看起来像这样: