以ShortDateString格式显示我的选择列表项

时间:2015-11-18 15:13:54

标签: c# asp.net-mvc asp.net-mvc-4 datetime

我不确定我做错了什么。我有一个带有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格式显示的编辑器模板会更容易吗?

1 个答案:

答案 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")