Nic*_*sen 7 asp.net-mvc asp.net-mvc-3
我有一个带有DateTime属性的模型,它在一个地方放置在一个隐藏的输入字段中.
@Html.HiddenFor(m => m.StartDate)
Run Code Online (Sandbox Code Playgroud)
这会生成以下HTML:
<input id="StartDate" name="StartDate" type="hidden" value="1/1/2011 12:00:00 AM" >
Run Code Online (Sandbox Code Playgroud)
问题是时间包含在值中,我的自定义日期验证需要格式为##/##/####的日期,从而导致验证失败.我可以轻松地更改我的自定义日期验证,以使这种情况工作,但我宁愿这样做,以便隐藏字段将值放在正确的格式.
我已尝试在模型属性上使用DisplayFormat属性,但似乎不会更改隐藏输入的格式.
我确实意识到我可以手动创建隐藏的输入并为该值调用StartDate.ToString("MM/dd/yyyy"),但我也在动态生成的项目列表中使用此模型,因此输入被索引并具有像Collection [Some-Guid] .StartDate这样的ID会让你更难以找出输入的id和名称.
无论如何,当将页面上的字段渲染为隐藏输入时,是否以特定格式显示"值"值?
Dar*_*rov 10
您可以使用自定义编辑器模板:
public class MyViewModel
{
[UIHint("MyHiddenDate")]
public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后定义~/Views/Shared/EditorTemplates/MyHiddenDate.cshtml
:
@model DateTime
@Html.Hidden("", Model.ToString("dd/MM/yyyy"))
Run Code Online (Sandbox Code Playgroud)
最后在你的视图中使用EditorFor
帮助器:
@model MyViewModel
@Html.EditorFor(x => x.Date)
Run Code Online (Sandbox Code Playgroud)
这将为Date
视图模型的属性呈现自定义编辑器模板,从而使用所需格式使用值呈现隐藏字段.
归档时间: |
|
查看次数: |
7155 次 |
最近记录: |