Html.DropDownListFor 中的日期格式
Date format in an Html.DropDownListFor
MVC 新手,多多包涵。
我正在尝试用日期列表填充 Html.DropDownListFor
控件。我需要文本为 MM/DD/YYYY
,数据为 DateTime
。我不知道如何格式化文本以删除日期。
这是来自视图的代码:
@Html.DropDownListFor(m => m.RunDate, Model.ReportRunDates, "--Select Report Date--", new { @class = "dropdown" })
来自视图模型:
[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();
}
}
我得到了显示数据的控件,这本身就是一个巨大的胜利,但我不知道如何在下拉菜单的文本显示中删除时间戳。
提前致谢!
您可以在生成 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
};
}
请注意,如果您还想 post 仅打包日期组件(时间等于 00:00:00),那么您还可以格式化 Value
属性同理。
MVC 新手,多多包涵。
我正在尝试用日期列表填充 Html.DropDownListFor
控件。我需要文本为 MM/DD/YYYY
,数据为 DateTime
。我不知道如何格式化文本以删除日期。
这是来自视图的代码:
@Html.DropDownListFor(m => m.RunDate, Model.ReportRunDates, "--Select Report Date--", new { @class = "dropdown" })
来自视图模型:
[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();
}
}
我得到了显示数据的控件,这本身就是一个巨大的胜利,但我不知道如何在下拉菜单的文本显示中删除时间戳。
提前致谢!
您可以在生成 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
};
}
请注意,如果您还想 post 仅打包日期组件(时间等于 00:00:00),那么您还可以格式化 Value
属性同理。