1

我的 view.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);

谢谢

4

1 回答 1

5

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

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

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

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

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

所以你想要的是:

<%= Html.DropDownListFor(
    model => model.SelectedSunday, 
    Model.AllSundays
) %>
于 2012-08-15T11:16:23.470 回答