C# 在活页夹中解析日期的最佳方法是什么

C# 在活页夹中解析日期的最佳方法是什么,c#,asp.net-mvc,modelbinders,C#,Asp.net Mvc,Modelbinders,在模型绑定器中使用以下代码是否是一种好方法: TryParseDate(result.AttemptedValue, format, out parsedDate) 然后“format”是一个具有不同(客户特定)日期格式的变量。如2013年12月31日或2013年12月31日或其他日期 我对格式绑定有很大的问题,因为如果用户只将日期放在1位数字上,比如:2014年1月1日,它将不会解析,因为在“格式”值中允许使用格式:dd/MM/yyyy 我知道可以通过将此格式替换为d/M/yyyy来解决此

在模型绑定器中使用以下代码是否是一种好方法:

TryParseDate(result.AttemptedValue, format, out parsedDate) 
然后“format”是一个具有不同(客户特定)日期格式的变量。如2013年12月31日或2013年12月31日或其他日期

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


提前谢谢你

我建议您离开默认的模型绑定器来完成它的工作,它做得很好,可以为您处理本地化问题(即不同地区的不同日期格式)

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

我建议您的目标应该是允许用户以最常见的格式输入日期(例如英国或西班牙的
dd/MM/yyyy
,美国的
MM/dd/yyyy
)。这将处理大多数案件。如果您需要满足不同地区的用户的需求,只要您为用户会话设置线程区域性,默认的模型绑定器就可以满足您的所有需求:

string cultureCode = "en-GB";    //retrieve eg. from user profile
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureCode)
如果您想帮助以其他格式输入日期的用户,只需在页面上添加一个提示,说明预期的格式


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

问得好。在asp.net mvc中遇到类似的日期格式问题