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)
谢谢
<%=如果要将某些内容输出到响应中,则应该在末尾使用并且不使用逗号,否则您只执行永远不会刷新到响应的服务器端代码:
<%= 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)
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |