在我的EditorTemplates中,我有DateTime.cshtml - 可以在创建/编辑/更新视图中查找:
@model Nullable<System.DateTime>
@if ( Model.HasValue ) {
@Html.TextBox( "" , String.Format( "{0:dd/MM/yyyy}" , Model.Value ) , new { @class = "datepicker span2" } )
}
else {
@Html.TextBox( "" , String.Format( "{0:dd/MM/yyyy}" , DateTime.Now ) , new { @class = "datepicker span2" } )
}
在创建搜索视图时,我还想使用日期时间选择器 - 如果使用上面的代码,当它没有链接到模型,而只是纯HTML时,我将如何编写视图代码?
如果我只是在Razor标记中输入以下内容:
@using (Html.BeginForm())
{
<p>
Availability between: @Html.TextBox( "From" , String.Format( "{0:dd/MM/yyyy}") , new { @class = "datepicker span2" } )
and: @Html.TextBox( "To" , String.Format( "{0:dd/MM/yyyy}") , new { @class = "datepicker span2" } )
<input type="submit" value="Search" /></p>
}
我刚收到错误:
{"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."}
感谢您的帮助,
标记
答案 0 :(得分:1)
您尚未在DateTime
中指定String.Format
- 这就是您收到该错误的原因,它需要一个参数,但您还没有提供任何参数。尝试使用DateTime.Now
e.g。
@Html.TextBox( "From" , String.Format( "{0:dd/MM/yyyy}", DateTime.Now ),
new { @class = "datepicker span2" } )
或者,只需向ViewModel添加两个DateTime
属性,并在其上使用EditorFor
帮助程序。
答案 1 :(得分:0)
请勿在主视图中使用TextBox
。如果您希望自定义编辑器模板呈现,则应使用EditorFor
帮助程序:
@using (Html.BeginForm())
{
<p>
Availability between:
@Html.EditorFor(x => x.From)
and:
@Html.EditorFor(x => x.To)
<input type="submit" value="Search" />
</p>
}
如果From
和To
属性的类型为DateTime
,则ASP.NET MVC将自动呈现您的自定义编辑器模板(~/Views/Shared/EditorTemplates/DateTime.cshtml
)。