我在客户端有一个Date变量,我想将Date变量传递给服务器端的控制器。 我已作为普通字段通过,日期默认为01-01-0001 12:00:00 AM。
帮助我以正确的格式转换日期字段。
答案 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
}
}