繁体   English   中英

ASP.NET MVC DateTime手动输入转换最佳实践

[英]ASP.NET MVC DateTime manual input conversion best practice

我有带有普通HTML表单的ASP.NET MVC网站,带有文本字段,可将Date放入。

<input type="textbox" name="date"/>

控制器方法如下:

void DoSomething(DateTime date)
{
 ....
}

由于用户具有不同的区域设置和习惯,因此如何输入日期,我应如何处理DateTime格式? 我猜应该有一些代码试图将字符串解析为几种日期时间格式。 我可以在每次控制器期望DateTime时都集中处理所有DateTime参数而无需Helper类调用的情况吗? 如何考虑用户的语言环境?

先感谢您!

例如,您可以使用jQuery UI datepicker ,并设置格式。 与简单的文本框相比,这将是更好的用户体验。

$('#datetime').datepicker({ format: 'yy-mm-dd hh:ii' });

Datepicker为本地化内容提供支持,以适应不同的语言和日期格式。

此处的最佳做法是强制用户仅输入一种日期格式。

您可以使用RegularExpression验证和日期选择器(例如JQuery Datepicker)来实现此目的。

更新:

另外,如果您不想强制用户使用一种格式,请检查C#的DateTime.Parse方法,但这有点棘手,在使用它时需要小心。 可能会有一些冲突。 (Eg 2011-01-01 can be seen as two different dates if you don't know the format.)

如果您尝试处理每种类型的格式,则必须提供格式的类型。 通常面临的问题是mm-dd-yy和dd-mm-yy格式,例如02-01-11。 问题是1月2日还是2月1日。

如果您能够发送正确的格式类型,那么除了输入字符串本身可能是错误的以外,应该没有任何问题。

最好的解决方案(您可能不需要的解决方案)是在用户输入表单时验证日期/时间。 就像为日期和月份制作单独的下拉框(或只是文本框)一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM