我在我的datetime字段中使用html.textbox,因为我需要以特定格式格式化它们,但我不知道如何通过html.textboxfor来完成它。 但是,我意识到我需要在我的模型类中使用textboxfor进行验证:
[Required(ErrorMessage = "Storage Date is required")]
[DataType(DataType.DateTime, ErrorMessage = "Please input a valid date")]
public DateTime StorageDate { get; set; }
任何想法如何将我下面的Html.Textbox更改为Html.TextBoxFor并使用相同的设置?
@Html.TextBox("expirydate", String.Format("{0:ddd, d MMM yyyy}", DateTime.Now), new { id = "expirydate" })
@Html.ValidationMessageFor(model => model.ExpiryDate)
感谢任何帮助...谢谢...
答案 0 :(得分:1)
您并非需要使用TextBoxFor()
进行验证。如果TextBox与模型中的字段具有相同的ID,则模型绑定器将拾取它。如果您正在谈论获得不显眼的验证功能,您可以随时手动将data- *属性添加到TextBox。
然而,在这种情况下,使用EditorFor()
听起来像你真正想要的是自定义编辑器。这是一个更多的工作,但它将允许您通过给用户类似日期/时间选择器控件实际执行日期/时间格式。基本思路是:
Nullable<DateTime>
类型的模型,并将其放入Shared/EditorTemplates
视图文件夹中。[DataType(DataType.DateTime)]
属性Html.EditorFor(model => model.WhateverProperty)
幸运的是,日期/时间选择器可能是最流行的自定义MVC3编辑器,所以有很多例子可供选择;来自this question的代码工作正常,只需确保在答案中注明建议并在局部视图中替换此行:
@inherits System.Web.Mvc.WebViewPage<System.DateTime>
用这个:
@model System.DateTime?