私は次のモデルを持っています:
public class MyModel
{
[Display(Name = "My Date:")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public System.DateTime Date { get; set; }
}
編集部分で表示するよりも:
@using (Html.BeginForm()){
@Html.DisplayFor(x=>x.Date)
@Html.EditorFor(x=>x.Date)
@Html.ValidationMessageFor(x=>x.Date)
<input type="submit" value="ok"/>}
コントローラーでモデルを受け取ります
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
var model = new MyModel {Date = DateTime.Now.AddDays(-1)};
return View(model);
}
[HttpPost]
public ActionResult Index(MyModel model)
{
if (ModelState.IsValid)
{
return View(model);
}
return View(model);
}
My local machine format is (mm/dd/yyyy) と表示 され、このフォームを送信しようとすると、間違った検証が 行われます。独自のバインディングまたはバリデーターを作成するようにアドバイスする人がいると読みました。問題は、ApplyFormatInEditMode = true を設定している間、なぜそれをしなければならないのかということです。この属性が機能していないということですか!!!!