Html.Dropdownlist不显示在视图中

时间:2012-08-15 11:14:53

标签: asp.net-mvc model-view-controller

我的视图中有这一行.aspx我没有使用剃须刀:

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

当我运行程序并查看源代码时,没有任何内容。 我在我的行动中使用了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);

感谢

1 个答案:

答案 0 :(得分:5)

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

<%= Html.DropDownListFor(
    model => model.AllSundays, 
    new SelectList(Model.AllSundays)
) %>

同样AllSundays似乎已经是IEnumerable<SelectListItem>,因此您无需将其提供给视图中的SelectList

<%= Html.DropDownListFor(
    model => model.AllSundays, 
    Model.AllSundays
) %>

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

所以你想要的是:

<%= Html.DropDownListFor(
    model => model.SelectedSunday, 
    Model.AllSundays
) %>