C# 列表中的简单下拉列表<;模型>;

C# 列表中的简单下拉列表<;模型>;,c#,asp.net,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,模型 @model List<Survey.SurveyQuestion> 上述代码的输出: 无法使用DropDownList for,因为它无法识别字段问题ID(或影响任何字段) 以下代码正确显示所有数据: @foreach (var item in Model) { <p>@item.QuestionId - @item.QuestionText</p> } @foreach(模型中的变量项) { @item.QuestionId-@item

模型

@model List<Survey.SurveyQuestion>
上述代码的输出:

无法使用DropDownList for,因为它无法识别字段问题ID(或影响任何字段)

以下代码正确显示所有数据:

@foreach (var item in Model)
{
    <p>@item.QuestionId - @item.QuestionText</p>
}
@foreach(模型中的变量项)
{
@item.QuestionId-@item.QuestionText

}
您的
选择列表设置错误。请改为尝试此操作(在SO上为可读性添加了行空间):


奇怪的是你没有使用dropdownlistfor。我建议您这样做,但因为您不是,所以错误很奇怪。问题是@Html.DropDownListFor(item=>item.QuestionId…),QuestionId无法识别,编译器错误。如果您使用DropDownListFor,我们可以解决这个问题。我被难住了,因为我看到你在使用dropdownlist——不,用DropDownListFor代码更新。它不编译。好的,的dropdownlist需要使用lambda绑定到模型变量。你知道那是什么意思吗?是的,就是这样。我应该仔细看看。@DaveA呵呵,是的,那些html助手重载可能是一场噩梦,在actionlink上混合html属性和路由值的顺序总是让我抓狂:)谢谢,天哪,我真蠢。。。只是把顺序弄混了。这个@Html.DropDownList(“QuestionId”,新的选择列表(@Model,“QuestionId”,“QuestionText”))也可以使用。@AseemGautam Np很高兴我能帮上忙:)。只需附带说明,您不需要在单词
Model
之前添加
@
,因为您已经在Razor code中(在
下拉列表
调用中):)
@Html.DropDownListFor(item => item.QuestionId, new SelectList(Model, 
    "QuestionId", "QuestionText"), "--Select --"))
@foreach (var item in Model)
{
    <p>@item.QuestionId - @item.QuestionText</p>
}
@Html.DropDownList(
    "Questions",
     Model.Select(m => new SelectListItem 
         {
             Value = m.QuestionId.ToString(),
             Text = m.QuestionText
         }))