4
我有一個需要DateTime的控制器操作?通過查詢字符串作爲post-redirect-get的一部分。控制器看起來像例如MVC3,Razor視圖,EditorFor,查詢字符串值覆蓋模型值
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index(DateTime? date)
{
IndexModel model = new IndexModel();
if (date.HasValue)
{
model.Date = (DateTime)date;
}
else
{
model.Date = DateTime.Now;
}
return View(model);
}
[HttpPost]
public ActionResult Index(IndexModel model)
{
if (ModelState.IsValid)
{
return RedirectToAction("Index", new { date = model.Date.ToString("yyyy-MM-dd hh:mm:ss") });
}
else
{
return View(model);
}
}
}
我的模型是:
public class IndexModel
{
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd MMM yyyy}")]
public DateTime Date { get; set; }
}
而剃刀的看法是:
@model Mvc3Playground.Models.Home.IndexModel
@using (Html.BeginForm()) {
@Html.EditorFor(m => m.Date);
<input type="submit" />
}
我的問題是雙重的:
(1)日期格式施加在如果查詢字符串包含日期值,則使用[DisplayFormat]屬性的模型不起作用。 (2)模型中保存的值似乎被查詢字符串值包含的值覆蓋。例如。如果我在Index GET操作方法中設置了一個斷點,並且手動設置日期等於今天說,如果查詢字符串包含例如?date = 1/1/1,則在文本框中顯示「1/1/1」(計劃將驗證日期,如果查詢字符串無效,則默認它)。
任何想法?
啊 - 真棒的答案,非常感謝:-) – magritte