Html.Dropdownlist不显示在视图中

cha*_*cat 1 model-view-controller asp.net-mvc

我在view.aspx中有这一行我没有使用剃须刀:

 <p style="color:Red">
        <% Html.DropDownListFor(model => model.AllSundays, new SelectList(Model.AllSundays)); %>
  </p>
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序并查看源代码时,没有任何内容.我在我的行动中使用了ViewModel:

 var allSundaysInThisMonth = new SundaysInMonthViewModel
  {
    AllSundays = sundays.Select(x => new SelectListItem
    {
      Value = x.ToString("dd-MM-yyyy"),
      Text = x.ToString("dd-MM-yyyy"),
    })
  };

  var selectedSunday = new SundaysInMonthViewModel{
    SelectedSunday = thisMonthSundays.Where(x => x < now)
    .Last().ToString("dd-MM-yyyy")
  };

  return View(allSundaysInThisMonth);
Run Code Online (Sandbox Code Playgroud)

谢谢

Dar*_*rov 5

<%=如果要将某些内容输出到响应中,则应该在末尾使用并且不使用逗号,否则您只执行永远不会刷新到响应的服务器端代码:

<%= Html.DropDownListFor(
    model => model.AllSundays, 
    new SelectList(Model.AllSundays)
) %>
Run Code Online (Sandbox Code Playgroud)

AllSundays似乎已经是一个IEnumerable<SelectListItem>,所以你并不需要养活,要一个SelectList视图:

<%= Html.DropDownListFor(
    model => model.AllSundays, 
    Model.AllSundays
) %>
Run Code Online (Sandbox Code Playgroud)

此外(这是非常重要的),您不应使用与所选值和可用值相同的属性.目前你正在使用AllSundays两次.那是绝对错误的.DropDownList帮助器期望第一个参数是视图模型上的标量属性,用于保存选定值,IEnumerable<SelectListItem>属性作为保存所选值的第二个参数.

所以你想要的是:

<%= Html.DropDownListFor(
    model => model.SelectedSunday, 
    Model.AllSundays
) %>
Run Code Online (Sandbox Code Playgroud)