将日期对象从javascript传递到asp.net mvc控制器

时间:2010-05-28 07:24:44

标签: javascript asp.net-mvc date

我在客户端有一个Date变量,我想将Date变量传递给服务器端的控制器。 我已作为普通字段通过,日期默认为01-01-0001 12:00:00 AM。

帮助我以正确的格式转换日期字段。

2 个答案:

答案 0 :(得分:1)

ASP.NET MVC期望DateTime值采用Thread.CurrentLanguage格式。请检查您使用的语言。

就是这样,因为用户可能会在TextBox中输入日期,并且他们会输入他们语言的格式。

像Pieter所说:在这种情况下,一种简单的方法是使用字符串。

另一种方法是使用

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
}

在Global.Asax。

在ModelBinding发生后,您可以在过滤器中切换回用户的语言:

    public override void OnActionExecuting(ActionExecutingContext filterContext)
     {
             string language = //find a way to get the language - I have it in the route
             Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(language);
             Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
         base.OnActionExecuting(filterContext)
     }

这种方式存在一些风险,但是如果modelBinding使用InvariantCulture(想想路线中的十进制值,路线中的日期时间......),我会发现在很多情况下都会更容易。

答案 1 :(得分:0)

我认为最简单的方法是将日期的字符串表示形式传递给ASP.NET MVC操作并尝试使用DateTime.TryParse(..)解析它。

[HttpPost]
public ActionResult(string dateTimeString)
{
    DateTime tempDateTime;
    if(DateTime.TryParse(dateTimeString, out tempDateTime))
    {
       //Handle
    }
}