我的视图中有这一行.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);
感谢
答案 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
) %>