Asp.net mvc 3 在mvc中将fromat:dd.MM.yyyy中的日期转换为MM/dd/yyyy时出现问题

Asp.net mvc 3 在mvc中将fromat:dd.MM.yyyy中的日期转换为MM/dd/yyyy时出现问题,asp.net-mvc-3,asp.net-mvc-3-areas,Asp.net Mvc 3,Asp.net Mvc 3 Areas,下面是一个例子 模型 public class MyViewModel { [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")] public DateTime Validity { get; set; } } 控制器 public class HomeController : Controller { public ActionResult Index()

下面是一个例子

模型

public class MyViewModel
{
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
    public DateTime Validity { get; set; }
}
控制器

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            Validity = DateTime.Now
        });
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return View(model);
    }
}
看法

@model MyViewModel
@使用(Html.BeginForm())
{
@EditorFor(x=>x.Validity)
}
当我选择2011年12月12日这样的日期时,它工作正常,但当我使用2011年12月18日这样的日期时,它会将属性(datetime)中的值设置为01/01/0001。这对我来说是个问题。

您期望的日期是“UK”格式(日/月/年),但转换代码使用的是“US”格式(月/日/年)

从字符串转换为
DateTime
的代码需要使用正确的格式字符串


您需要获取区域性和格式信息的。你可以给这个方法一个可能的格式列表,这样你就可以处理各种输入。

你可以在web.config文件中添加

@ChrisF,如果我们不指导新用户,很有可能在一年内我们会进行同样的对话,而数字会有所不同。
@model MyViewModel
@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.Validity)
    <input type="submit" value="OK" />
}