Taj*_*oma 5 date-formatting editorfor razor asp.net-mvc-3
我正在使用asp.net mvc3中的razor视图引擎.
现在,我需要一个输入,DateTime它应该以固定的格式显示值(比方说dd-MMM-yyyy).所以我可以这样做:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MMM-yyyy}")]
public DateTime StartDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.EditorFor(model => model.StartDate)
Run Code Online (Sandbox Code Playgroud)
但我需要在输入中添加一个类.我认为这是不可能的EditorFor.所以我可以使用
@Html.TextBoxFor(model => model.StartDate, new { @class = "Date" })
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下显示格式不起作用.
Model可以为null.所以,
@Html.TextBox("StartDate", string.Format("{0:dd-MMM-yyyy}", Model.StartDate))
Run Code Online (Sandbox Code Playgroud)
会扔NullReferenceException.
奥菲莉亚的方式是我的更快版本.但是,如果您的应用程序中有一些日期字段,这种方式很有用.所以这就是我喜欢的方式:
- >在解决方案资源管理器中,在 Shared中创建一个名为" EditorTemplates " 的文件夹
- >在那里,添加一个新的(非强类型)局部视图.称之为" DateTime".
- >打开此视图,并删除其中的任何代码,并在其中抛出以下代码:
@model System.DateTime
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "date" /* + any other html attributes you want */ })
Run Code Online (Sandbox Code Playgroud)
- >在ViewModel中,您的日期字段应如下所示:
[Display(Name = "My Date:"), DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime MyDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
- >在主视图和任何想要使用日期字段的视图中,您可以EditorFor在属性上使用,如下所示:
@Html.EditorFor(m => m.MyDate)
Run Code Online (Sandbox Code Playgroud)
您可以在控制器中初始化日期字段,或在viewmodel的构造函数中设置默认日期.
| 归档时间: |
|
| 查看次数: |
15844 次 |
| 最近记录: |