【问题标题】:Simple Dropdown list from List<model>List<model> 中的简单下拉列表
【发布时间】:2013-02-24 20:24:10
【问题描述】:

型号

@model List<Survey.SurveyQuestion>

SurveyQuestion 有两个属性,QuestionIdQuestionText

Html.DropDownList("Questions", new SelectList(@Model))

@Html.DropDownList("Questions", new SelectList(@Model), "QuestionId", "QuestionText")

以上代码的输出:

无法使用 DropDownListFor,因为它无法识别字段 QuestionId(或实际上任何字段)。

@Html.DropDownListFor(item => item.QuestionId, new SelectList(Model, 
    "QuestionId", "QuestionText"), "--Select --"))

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

@foreach (var item in Model)
{
    <p>@item.QuestionId - @item.QuestionText</p>
}

【问题讨论】:

  • 奇怪的是你没有使用下拉列表。我会推荐它,但因为你不是,所以错误很奇怪。
  • 问题是@Html.DropDownListFor(item => item.QuestionId ...),无法识别QuestionId,编译器错误。
  • 如果您使用的是下拉列表,我们可以解决这个问题。我很难过,因为我看到你使用下拉列表 - 没有 FOR
  • 更新了 DropDownListFor 代码。它不编译。
  • 好的,下拉列表需要一个模型变量来绑定一个 lambda。你知道那是什么意思吗?

标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor


【解决方案1】:

您的SelectList 设置错误。试试这个(为 SO 的可读性添加了行空间):

@Html.DropDownList(
    "Questions",
     Model.Select(m => new SelectListItem 
         {
             Value = m.QuestionId.ToString(),
             Text = m.QuestionText
         }))

【讨论】:

  • 是的,就是这样。我应该仔细看看。
  • @DaveA 呵呵,是的,那些 html 帮助程序重载可能是一场噩梦,在 actionlink 上混合 html 属性和路由值的顺序总是让我抓狂:)
  • 谢谢,天哪,我太笨了……只是把顺序弄混了。这个@Html.DropDownList("QuestionId", new SelectList(@Model, "QuestionId", "QuestionText")) 也有效。
  • @AseemGautam Np 很高兴我能提供帮助:)。附带说明一下,您不需要在 Model 之前使用 @,因为您已经在 Razor 代码中(在 DropDownList 调用中):)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2014-04-17
  • 2014-08-20
  • 1970-01-01
相关资源
最近更新 更多