MVC ModelMetadata属性和格式化日期的问题
-
08-10-2019 - |
题
我正在尝试弄清楚如何使用MVC3 RC2和用数据通道装饰的型号格式化日期。
这是我的模型...
public class Model
{
[Display(Name = "Date of Birth")]
[DisplayFormat(@DataFormatString = "MM/dd/yyyy")]
public DateTime DateOfBirth { get; set; }
}
这是我的控制器...
public class IndexController : Controller
{
public ActionResult Index()
{
return View( new Model() {DateOfBirth = DateTime.Now});
}
}
这是我的观点...
@model MvcApplication6.Models.Model
@Html.LabelFor(m=>m.DateOfBirth)
@Html.TextBoxFor(m => m.DateOfBirth)
@Html.EditorFor(m => m.DateOfBirth)
当我运行该站点时,对于两个控件,该页面显示一个文本框,并在字符串中包含的时间(当我想要的日期)(按模型中的装饰属性指定)时。
我用布拉德·威尔逊的 文章 在此模式的模型上。
我做错了什么?
解决方案
做这个:
[DisplayName("Date of Birth")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime DateOfBirth { get; set; }
其他提示
实际上,我认为这里的问题与以下事实有关。 DefaultModelBinder
不能以适当的方式处理数据(这意味着我们不能将前端字段绑定到DateTime 部分的, ,就像我们以前在他人中所做的一样咳嗽 Castlemonorail 咳嗽] MVC框架)。
我已经创建了一个自定义模型粘合剂来解决该问题。但是斯科特·汉塞尔曼(Scott Hanselman)做了类似的事情 这里, ,所以我想您可以使用他的解决方案。
当然,您可以通过属性处理这种情况,但这意味着您需要在 全部 DateTime字段。这不会解决另一个问题:有时我们需要在日期零件上有一个字段,而在时间部分则需要一个字段 仅在前端, ,并将单个DateTime字段保留在后端。该模型粘合剂解决方案允许这完全允许。
不隶属于 StackOverflow