如何更改.Net MVC中DateTime模型绑定程序的默认输入格式?

Dav*_*enn 5 c# asp.net-mvc

我有一个相当标准的.Net MVC Controller方法:

public ActionResult Add(Customer cust) {  
  //do something...  
  return View();
}
Run Code Online (Sandbox Code Playgroud)

客户是这样的:

public class Customer {
  public DateTime DateOfBirth { get; set; }
  //more stuff...
}
Run Code Online (Sandbox Code Playgroud)

并包含一个页面:

<div><%= Html.TextBox("DateOfBirth") %></div>
Run Code Online (Sandbox Code Playgroud)

问题是我的站点位于美国服务器上,因此cust.DateOfBirth以美国格式MM / dd / yyyy解析。但是,我希望用户以英国格式dd / MM / yyyy输入他们的出生日期。

我可以在DateTime ModelBinder上更改默认输入格式,还是必须创建自己的自定义ModelBinder?

tva*_*son 5

您可以在web.config文件或页面级别更改区域性。但是,如果您只想更改日期格式,而不要更改区域性的其他方面,则可能需要通过global.asax或通用基本控制器中的代码修改当前区域性的DateTimeFormat并将其设置为DateenFormat -GB”。

参考

要为所有页面设置UI文化,请在Web.config文件中添加一个全球化部分,然后设置uiculture和文化属性,如以下示例所示:

<globalization uiCulture="en" culture="en-GB" />

要设置单个页面的UI文化和文化,请设置@ Page指令的Culture和UICulture属性,如以下示例所示:

<%@ Page UICulture="en" Culture="en-GB" %>

若要使ASP.NET将UI文化和文化设置为当前浏览器设置中指定的第一种语言,请将UICulture和文化设置为自动。或者,您可以将此值设置为auto:culture_info_name,其中culture_info_name是区域性名称。有关文化名称的列表,请参见CultureInfo。您可以在@ Page指令或Web.config文件中进行此设置。

选择:

 CultureInfo.CurrentUICulture.DateTimeFormat
     = CultureInfo.CurrentCulture.DateTimeFormat
     = new CultureInfo( "en-GB", false ).DateTimeFormat;
Run Code Online (Sandbox Code Playgroud)