C# 更改CultureInfo时从视图到控制器获取空datetime值
net mvc中,我有一个控制器,它使用jquery datepicker从视图中获取datetime参数,然后传递 使用json向控制器发送的值, 这一切都很好,除了在我的例子中将语言cultureInfo更改为德语时,datetime参数的值始终为null 这是控制器:C# 更改CultureInfo时从视图到控制器获取空datetime值,c#,asp.net-mvc,datetime,cultureinfo,C#,Asp.net Mvc,Datetime,Cultureinfo,net mvc中,我有一个控制器,它使用jquery datepicker从视图中获取datetime参数,然后传递 使用json向控制器发送的值, 这一切都很好,除了在我的例子中将语言cultureInfo更改为德语时,datetime参数的值始终为null 这是控制器: public JsonResult GetDetails(DateTime? from, DateTime? to) { //Do something.. } <input type
public JsonResult GetDetails(DateTime? from, DateTime? to)
{
//Do something..
}
<input type="text" id="from" value="@Model.From.ToString("dd/MM/yyyy")" class="datepicker" />
<input type="text" id="to" value="@Model.To.ToString("dd/MM/yyyy")" class="datepicker" />
模型:
public class UsagesModel
{
public DateTime From
{
get;
set;
}
public DateTime To
{
get;
set;
}
}
选择数据并将其传递给控制器的视图:
public JsonResult GetDetails(DateTime? from, DateTime? to)
{
//Do something..
}
<input type="text" id="from" value="@Model.From.ToString("dd/MM/yyyy")" class="datepicker" />
<input type="text" id="to" value="@Model.To.ToString("dd/MM/yyyy")" class="datepicker" />
我能做什么,问题在哪里,因为它在英国和法国文化中都很好用。请帮帮我 我不知道确切的变化,但可能是因为德国使用的日期/时间格式与英语和法语地区不同。我会尝试从javascript中添加一些警报,以便在不同的点上看到您有一个值,然后查看它在哪里变得异常。我怀疑该值仍然存在,但对日期格式不满意,应该是一些.split(“/”)和.join(“/”)函数调用的快速修复方法,并寻址数组的索引。您可以花大量时间为不同文化的mvc应用程序获取正确的格式
public JsonResult GetDetails(string from, string to)
{
var fromDate = DateTime.Parse(from);
var toDate = DateTime.Parse(to);
//Do something..
}
正如Khan在评论中提到的,您可以将其设置为DateTime.ParseExact()
,这样您就不会遇到其他文化问题
我应该使用什么字符串格式传递给控制器?@inna如果使用此解决方案,您会选择哪种格式。请确保您正在控制器中分析此格式。@matrixuly A
ParseExact
在这里更有意义,因为Parse
仅在区域性与字符串匹配时才起作用。非常感谢您的帮助!德国使用
作为日期分隔符,而不是/
。当您的StringToJSONDate
函数期望它们看起来像08/07/2015
时,您的输入将包含一个类似08.07.2015
的值。