Html.DropDownListFor中的日期格式

时间:2015-11-03 18:48:18

标签: c# asp.net-mvc datetime html.dropdownlistfor

MVC新手,请耐心等待。

我正在尝试使用日期列表填充Html.DropDownListFor控件。我需要将文字设为MM/DD/YYYY,数据为DateTime。我无法弄清楚如何格式化文本以删除日期。

以下是视图中的代码:

@Html.DropDownListFor(m => m.RunDate, Model.ReportRunDates, "--Select Report Date--", new { @class = "dropdown" })

来自viewModel:

[Display(Name = "Date")]
public IEnumerable<SelectListItem> ReportRunDates { get; set; }

[DisplayFormat(DataFormatString = "{0:d}")]
public string RunDate { get; set; }

来自控制器:

[HttpGet]
public ActionResult StatusReport()
    {
        var vm = new ViewModels.ReportHistoryViewModel
        {
            ReportRunDates = GetReportRunDates(),
        };
        return View("StatusReportSearch", vm);
    }

private SelectList GetReportRunDates()
{
    var ReportRunDates = new List<ReportHistory>();

    ReportRunDates = RenewalUnderwritingLayer.GetReportRunDates();

    return new SelectList(ReportRunDates, "RunDate", "RunDate");
}

模特的代码:

public class ReportHistory
{
    [Key]
    public int Id { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid ReportHistoryGuid { get; set; }
    public DateTime ActivityDate { get; set; }
    public DateTime RunDate { get; set; }
}

调用DAL的代码:

    public static List<ReportHistory> GetReportRunDates()
    {
        using (var uow = new UnitOfWorkSQL())
        {
            return uow.Repository<ReportHistory>()
                .Query()
                .Get()
                .Distinct()
                .ToList();
        }
    }

我有控件显示数据,感觉就像一个巨大的胜利本身,但我无法弄清楚如何在下拉文本显示中删除时间戳。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以在生成SelectListItem时格式化日期。将您的GetReportRunDates()方法更改为

private IEnumerable<SelectListItem> GetReportRunDates()
{
  return RenewalUnderwritingLayer.GetReportRunDates().Select(r => new SelectListItem
  {
    Text = string.Format("{0:MM/dd/yyyy}", r.RunDate),
    Value = r.RunDate
  };
}

注意,如果您还想仅发布日期组件(时间等于00:00:00),那么您也可以用同样的方式格式化Value属性。