6

模型绑定器中的好方法使用如下代码:

TryParseDate(result.AttemptedValue, format, out parsedDate) 

然后“格式”是具有不同(客户特定)日期格式的变量。像 12/31/2013 或 31.12.2013 或其他。

我对格式绑定有很大的问题,因为如果用户只使用 1 位数字输入日期,例如:2014 年 1 月 1 日,它将无法解析,因为在“格式”值中允许格式:dd/MM/yyyy 我知道这是可能的通过将此格式替换为 d/M/yyyy 来解决,然后它适用于两种情况,但这是好方法还是危险?

先感谢您!

4

1 回答 1

1

我建议保留默认模型绑定器来完成它的工作,它做得很好,并且会为你处理本地化问题(即不同语言环境的不同日期格式)。

考虑到用户如何输入日期总是有限制的(例如,您不允许他们输入yyyy-MM-dd,即使它是有效的日期格式)。您的自定义活页夹代码不会改变这一点,因为它提供了一种格式。

我建议您的目标应该是允许用户以他们最常用的格式输入日期(例如,dd/MM/yyyy在英国或西班牙,MM/dd/yyyy在美国等)。这将处理大多数情况。如果您需要满足不同语言环境的用户,默认模型绑定器将为您完成所有工作,只要您为用户会话设置线程文化:

string cultureCode = "en-GB";    //retrieve eg. from user profile
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureCode)

如果您想帮助正在以其他格式输入日期的用户,只需在您的页面上放置一个提示,说明预期的格式。

如果您确实必须接受每个语言环境的多种格式,您将需要编写一个自定义模型绑定器,并且可能想要尝试为您处理的每个语言环境传递一个可接受格式的数组。

于 2013-07-11T14:31:41.177 回答