我不确定我做错了什么。我有一个带有SelectList属性的模型,该属性将包含多个日期作为其值。我想显示这些值而不添加时间戳。如何以短日期格式显示这些日期?我有以下ViewModel:
public class EditWeightsViewModel
{
[DisplayName("Associates")]
public SelectList AssociatesList { get; set; }
[DisplayName("Week")]
public SelectList WeeksOfEntryList { get; set; }
public decimal Weight { get; set; }
}
这是我的控制器的一部分(*注意,周是日期时间列表):
editWeightsViewModel.WeeksOfEntryList = new SelectList(weeks.Select(item => new SelectListItem
{
Selected = false,
Value = item.ToString(),
Text = item.ToShortDateString()
}));
我的下拉列表显示System.Web.MVC.SelectListItem
而不是实际日期。我究竟做错了什么?我这样做错了吗?创建一个以ShortDateTime格式显示的编辑器模板会更容易吗?
答案 0 :(得分:0)
Html.DropDownListFor
辅助方法的第二个参数是SelectListItem
的集合。因此,将WeeksOfEntryList
属性的类型更改为SelectListItem
列表。我还添加了另一个属性SelectedWeek
来存储选定的选项值。
public class EditWeightsViewModel
{
public string SelectedWeek {set;get;}
[DisplayName("Week")]
public List<SelectListItem> WeeksOfEntryList { get; set; }
[DisplayName("Associates")]
public SelectList AssociatesList { get; set; }
public decimal Weight { get; set; }
}
当您加载viewmodel的WeeksOfEntryList
属性值时。
public ActionResult Create()
{
var vm = new EditWeightsViewModel();
vm.WeeksOfEntryList = weeks.Select(s=> new SelectListItem
{ Value=s.ToShortDateString(),
Text=s.ToShortDateString()}).ToList();
//If you want to keep one option selected, Set the vm.SelectedWeek property value.
return View(vm);
}
在你的剃刀视图中,
@using YourNameSpaceHere.EditWeightsViewModel
@Html.DropDownListFor(s=>s.SelectedWeek, Model.WeeksOfEntryList ,"Select")