在HTTPGET中绑定en-GB日期我对Dates做了一个噩梦。我们位于英国,因此我们的日期采用dd/MM/yyyy格式。这是用户在需要特定日期时将在表单中键入的内容。我有一个只接受这样的属性的表单。它显然是DateTime类型。我想在GET中将此表单发送到控制器,这样用户就有了一个不错的url,可以保存通行证等。视图还需要将JQueryUI日期选择器绑定到此元素。我还需要表单元素具有特定的id和类,所以我真的需要将其呈现为表单:@Html.TextBoxFor(model=>model.ReturnDate,new{Class="date",id="ReturnDate"})我在web.config中指定了英国文化变体:但是,如此处所述(http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx),当让忽略文化变体的MVC控制器启动时默认为美国(显然在美国以外没有人存在,所以这对微软来说很好,咆哮)附件没有帮助,因为这意味着我必须添加Setitfor模型中的每个日期!这意味着,如果用户输入01/05/2012,我最终输入05/01/2012,这是错误的!我已经研究了这个问题的各种解决方案,但没有一个真正符合我的需要。我需要一种方法,以便通过GET发送的所有日期都采用英国格式。我们完全位于英国,因此不会输入英国格式。我真的不想创建和编辑,除非他们可以在没有连接到该编辑器的View/Viewmodel的情况下进行,因为在我们有日期选择器的任何地方使用它都会非常笨拙。所有帮助将不胜感激!感谢@Jon指出了解决方案:如果(字符串.IsNullOrEmpty(dateString))dateString=controllerContext.HttpContext.Request.Form[bindingContext.ModelName];日期时间dt=newDateTime();boolsuccess=DateTime.TryParse(dateString,CultureInfo.GetCultureInfo("en-GB"),DateTimeStyles.None,outdt);如果(成功){返回dt;}else{返回空值;}}#endregion}然后在global.asax中注册:ModelBinders.Binders.Add(typeof(DateTime),newGBDateModelBinder());更新修改此以允许在发布时出现相同的问题!除了Liam的回答:对于那些仍然有这个问题(!)并试图绑定到NullableDateTime的人,请确保在global.asax中注册了正确的类型:ModelBinders.Binders.Add(typeof(DateTime),newGBDateModelBinder());ModelBinders.Binders.Add(typeof(DateTime?),新GBDateModelBinder());让我难住了15分钟!以上是C#学习教程:Bindingen-GBdatesharinginHTTPGET。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处:
