Jam*_*ack 4 asp.net-mvc asp.net-mvc-4
我正在使用Microsoft的说明将MVC3应用程序升级到MVC4 .一切都进行得相当顺利 - 除了我的几个日期模型属性现在渲染方式不同.例如,其中一个属性在viewmodel中定义如下:
[Required(ErrorMessage = "Required")]
[DataType(DataType.Date)]
[RegularExpression(@"([1-9]|0[1-9]|1[012])...",
ErrorMessage = "Format is mm/dd/yyyy")]
[FormatHint("mm/dd/yyyy")]
[InputSize("small")]
public string Date { get; set; }
Run Code Online (Sandbox Code Playgroud)
在升级到MVC4之前,这将通过调用来呈现,@Html.EditorFor(m => m.Date)这将使用自定义的EditorTemplate - String.cshtml模板(因为它是一个字符串!).我有一些格式化html的自定义数据注释,因此它在客户端使用了字段布局,jQueryUI和twitter Bootstrap.验证是通过jquery验证完成的,不引人注目.无论如何,这是它以前呈现的方式:

现在我正在使用MVC4,String.cshtml不再为此属性调用编辑器模板.它呈现如下(在Chrome中使用HTML5编辑器的东西,我假设):

该input元素看起来几乎相同 - 所有的jQuery验证位都在那里 - 唯一的区别似乎是type属性现在type="date",之前的位置type="text".
我想继续使用String.cshtmlEditorTemplate来获取此数据类型.我想可能有一个数据注释,我可以放在ViewModel属性上为其提供TemplateHint @Html.EditorFor(...).如果不是这样,我想知道我可以编写的自定义EditorTemplate来劫持MVC4的格式(我已经尝试过了DateTime.cshtml- 它也没有被调用).如果不是其中任何一个,那么我愿意接受如何获得我以前的属性渲染的建议.
gen*_*ane 13
在MVC4,使用的模板由以下内容确定:
UIHintAttribute如有DataTypeAttribute如有在MVC3,DataTypeAttribute没用过.
你的房产有
[DataType(DataType.Date)]
Run Code Online (Sandbox Code Playgroud)
所以使用模板Date.cshtml.如果它不存在,则执行默认渲染.
您有两种方法可以解决您的问题:
UIHint("String")在您的房产上添加,或String.cshtml为Date.cshtml| 归档时间: |
|
| 查看次数: |
3416 次 |
| 最近记录: |