ASP.. NET MVC 5 Html.DropDownListFor with datetime不起作用
本文关键字:with datetime 不起作用 DropDownListFor Html NET MVC ASP | 更新日期: 2023-09-27 18:02:54
我有一个类型为Datetime的属性,在编辑视图中,用户使用Html.DropDownListFor
选择该属性,问题是Html.DropDownListFor
没有在SelectList
中获得属性Selected
来选择值。我知道这是因为属性中的值有其他值,但是当我更改属性名称时,我可以工作:
价值观:
CancellationDate = {9/10/2016 12:00:00 AM}
CancellationDateListItem = new List<SelectListItem> {
new SelectListItem
{
Selected = true,
Text = "09/10/2016",
Value = "09/10/2016",
Disabled = false,
Group = null
},
new SelectListItem
{
Selected = true,
Text = "09/11/2016",
Value = "09/11/2016",
Disabled = false,
Group = null
}
};
CancellationDateListSelected = new SelectList(CancellationDateListItem);
CancellationDateListWithStringSelectedValue = new SelectList(CancellationDateListItem, CancellationDate.ToString("MM/dd/yyyy"));
CancellationDateListWithDateTimeSelectedValue = new SelectList(CancellationDateListItem, CancellationDate);
这些例子不起作用:
@Html.DropDownListFor(model => model.CancellationDate, CancellationDateListSelected )
@Html.DropDownList("CancellationDate", CancellationDateListSelected )
@Html.DropDownListFor(model => model.CancellationDate, CancellationDateListWithStringSelectedValue )
@Html.DropDownListFor(model => model.CancellationDate, CancellationDateListWithDateTimeSelectedValue )
,但显然这很好:
@Html.DropDownList("OtherName", CancellationDateListWithStringSelectedValue )
我想/知道这是由DateTime类型。我可以强制在DropDownListFor中获得SelectList
中的属性Selected
来选择该选项吗?
我相信这可能会有帮助。它没有绑定值的原因是-在设置值的同时,像下面这样调用了new。
new SelectListItem
{
....
};
请尝试使用{get;在类定义中设置;}。然后,在您的控制器中,或在实现中的其他地方,设置所需的值。
DateTime dt {get;set;}
...
dt = "9/10/2015";
当绑定到一个属性时,试图设置SelectListItem
的Selected
属性是毫无意义的,因为它的属性值决定了所选择的值。由于CancellationDate
的值是"9/10/2016 12:00:00 AM",这与您的选择列表中的任何值都不匹配(即"09/10/2016"answers"09/1/2016"),那么第一个选项将始终被选中(因为有些东西必须是)。
你的GET方法应该包含
List<string> dates = new List<string>() { "09/10/2016", "09/11/2016" };
model.CancellationDateListItem = new SelectList(dates);
model.CancellationDate = "09/11/2016";
return View(model);
和视图
@Html.DropDownListFor(m=> m.CancellationDate, Model.CancellationDateListItem)
因为CancellationDate
的值与第二个选项的值匹配,所以该值将被选中