如何将默认值设置为日期时间参数
本文关键字:日期 时间 参数 设置 默认值 | 更新日期: 2023-09-27 18:31:04
在我的MVC应用程序中,我想为DateTime
参数设置默认值。
[HttpPost]
public ActionResult BudgetVSActualTabular(DateTime startDate)
{
var Odata = _db.sp_BudgetedVsActualTabular(startDate).ToList();
string[] monthName = new string[12];
for (int i = 0; i < 12;i++ )
{
DateTime date = startDate;
date = date.AddMonths(i);
monthName[i] = date.ToString("MMMM") + " " + date.Year.ToString();
}
ViewBag.startDate = new SelectList(_db.DaymonFinancialYears, "startDate", "DateRange");
var MonthName = monthName.ToList();
ViewBag.Bdata = Odata;
ViewBag.Cdata = MonthName;
return View();
}
不能将
null
设置为 DateTime
,但可以改用Nullable DateTime
参数:
[HttpPost]
public ActionResult BudgetVSActualTabular(DateTime? startDate = null )
{
if (startDate == null)
{
startDate = new DateTime(2016, 06, 01);
}
//You should pass startDate.Value
var Odata = _db.sp_BudgetedVsActualTabular(startDate.Value).ToList();
}
您可以将默认关键字与此语法一起使用
public ActionResult BudgetVSActualTabular(DateTime startDate = default(DateTime))
这将使在不传递任何参数的情况下调用该方法成为可能,并且在方法中,startDate
变量将等于 DateTime.MinValue
如果您需要默认值为特定日期而不是DateTime.MinValue
则可以编写一个简单的测试
public ActionResult BudgetVSActualTabular(DateTime startDate = default(DateTime))
{
if(startDate == DateTime.MinValue)
startDate = new DateTime(2014,6,1);
// After the check for a missing parameter pass the startDate as before
var Odata = _db.sp_BudgetedVsActualTabular(startDate).ToList();
.....
}
命名参数和可选(默认)参数从 C# 4.0 开始可用。 如果您使用的是旧版本,则可以重载您的方法,例如:
public ActionResult BudgetVSActualTabular()
{
return BudgetVSActualTabular(new DateTime(2014,6,1));
}
我建议将日期时间设置为可空public ActionResult BudgetVSActualTabular(DateTime? startDate)
。
在控制器中,您可以使用 DateTime.HasValue 在 DateTime 为 null 时设置默认值。
var nonNullableDate = startDate.HasValue ? startDate.Value : new DateTime();
[HttpPost]
public ActionResult BudgetVSActualTabular(DateTime? startDate)
{
var nonNullableDate = startDate.HasValue ? startDate.Value : new DateTime();
var Odata = _db.sp_BudgetedVsActualTabular(nonNullableDate).ToList();
string[] monthName = new string[12];
for (int i = 0; i < 12;i++ )
{
DateTime date = nonNullableDate;
date = date.AddMonths(i);
monthName[i] = date.ToString("MMMM") + " " + date.Year.ToString();
}
ViewBag.startDate = new SelectList(_db.DaymonFinancialYears, "startDate", "DateRange");
var MonthName = monthName.ToList();
ViewBag.Bdata = Odata;
ViewBag.Cdata = MonthName;
return View();
}