使用Twitter Bootstrap的MVC4 Html.EditorFor for Date

时间:2014-07-18 13:18:38

标签: html asp.net-mvc twitter-bootstrap asp.net-mvc-4 razor

我正在使用MVC4 Razor为仅限日期字段构建一个输入框。这是我的代码:

    @Html.EditorFor(model => model.StartDate, new { @class = "form-control", type = "text" })

对于StartDate,我有以下定义:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime StartDate{ get; set; }

使用纯HTML条目样式,框不会被表单控件格式化。

我已经尝试更改日期文本,但它不适用于IE,因为这是一个不受支持的功能...而且我的应用程序也必须与IE一起使用。

我知道MVC5在该领域有一些变化,但我无法从项目要求中使用它。它应该是MVC4。

如何将数据输入样式设置为表格控件?

2 个答案:

答案 0 :(得分:1)

添加属性仅适用于MVC 5.1,因此您是正确的,这是行不通的。您可以将一个EditorTemplates文件夹添加到/ Views / Shared文件夹,并为DateTime添加一个编辑器,然后根据需要定义HTML控件。在您的模板中,您可以定义:

//DateTime.cshtml
model System.DateTime

@Html.TextBox("", Model.ToShortDateString(), new { @class = "form-control" })

答案 1 :(得分:1)

我的解决方案是在/ Views / Shared中添加一个EditorTemplate,添加bootstrap datepicker(来自here)和以下代码:

@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("d") : String.Empty, new { @class = "form-control" })
<script type="text/javascript">
    $(function () {
        // target only the input in this editor template
        $('#@Html.IdForModel()').datetimepicker({
            pickTime: false
        });
    });
</script>

工作正常...使用datepicker ....