ASP.DateTime格式仍然是视图上的一个问题

本文关键字:一个 问题 格式 DateTime 仍然是 视图 ASP | 更新日期: 2023-09-27 18:18:24

我已经成功覆盖了Dateformat,在控制器上使用UK格式。

所以张贴似乎对正确的日期有效。

@Html.ActionLink("Previous", "TimeTable", "RoomBookings", new { ViewDate = ViewBag.Date.AddDays(-1) } )

然而,在我看来,我有上述情况,增加一天就是增加一个月!

也就是说,调用带有相同日期的操作链接会导致它不断地反转。

是否有办法将这个UK日期格式也应用到视图中?

ASP.DateTime格式仍然是视图上的一个问题

可以这样做的一种方法是在您的控制器将继承的公共基控制器中重写区域性,如下所示:

public abstract class CommonControllerBase : Controller
{

    protected override void ExecuteCore()
    {
        var culture = CultureInfo.CreateSpecificCulture("en-GB");
        var t = Thread.CurrentThread;
        t.CurrentCulture = culture;
        t.CurrentUICulture = t.CurrentCulture;
        base.ExecuteCore();
    }
}

那么它将始终是英国格式,所以你可以在其中有一个视图:

<label>@ViewBag.Date</label>
@Html.ActionLink("Test", "Test", new { ViewDate = ViewBag.Date.AddDays(-1) } )

和一个像这样的控制器动作:

public ActionResult Test(DateTime viewDate)
{
    ViewBag.Date = viewDate;
    return View("Index");
}

,它应该对日期做正确的处理

由于ViewBag使用动态类型,运行时将推断数据类型,我猜它假设US格式。

如果使用强类型视图并显式地将属性声明为DateTime,则可以绕过这个问题。

或者我想你可以创建自己的HTML帮助器来输出这些链接。