Ser*_*gey 6 c# asp.net-mvc modelbinders
这是模型绑定器中的好方法使用这样的代码:
TryParseDate(result.AttemptedValue, format, out parsedDate)
Run Code Online (Sandbox Code Playgroud)
然后"格式"是具有不同(客户特定)日期格式的变量.如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)
Run Code Online (Sandbox Code Playgroud)
如果您想帮助以其他格式输入日期的用户,只需在页面上添加一个提示来解释所需的格式即可。
如果您确实必须为每个区域设置接受多种格式,则需要编写一个自定义模型绑定程序,并且可能希望尝试为您处理的每个区域设置传递一组可接受的格式。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |