MVC3 DataType.Date Editor在HTML中输出错误的类

时间:2011-09-15 23:32:10

标签: jquery asp.net-mvc-3 datetime datepicker editorfor

我有一个MVC3项目。我有2个模型类。让我们称他们为FooYes和FooNo。

我为每个人创建了控制器。

我为两者创建了CRUD视图。

然后我根据this link实现了jQuery DatePicker。我只实现了选择器部分,而不是验证。

在我的FooYes edit.cshtml中,日期选择器工作正常。在FooNo的edit.cshtml中,它没有。

我发现的唯一区别在于获取模型输出的类:

FooYes在最终的html中看起来像这样:

<input class="date" 

FooNo看起来像这样:

<input class="text-box single-line"

以下是FooYes的模型:

    [Display(Name = "Creation Date")]
    [DataType(DataType.Date)]
    public virtual DateTime CreationDate { get; set; }

这是FooNo的模型:

    [Display(Name = "Expiration Date")]
    [DataType(DataType.Date)]
    public virtual DateTime ExpirationDate { get; set; }

正如您所看到的,声明在模型中是相同的,所以不可能。我甚至尝试将FooNo中的ExpirationDate属性复制并粘贴到FooYes中,并将FooNo中的所有内容复制到FooYes中的FooYes,然后它就可以了。所以它不是模型中的代码

以下是.cshtml的代码:

    <div class="editor-label">
        @Html.LabelFor(model => model.CreationDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.CreationDate)
        @Html.ValidationMessageFor(model => model.CreationDate)
    </div>

这个与另一个之间唯一不同的是该字段的名称。

当我在最终结果中查看源html时,标题,包含,链接,一切都完全相同,除非在不起作用的情况下,class =设置为文本而不是日期。

我完全糊涂了。任何人都有任何想法会导致这种情况吗?

2 个答案:

答案 0 :(得分:0)

如果你真的只关注this link,那么它之所以不起作用,是因为设置日期选择器的选择器只包含.date。尝试将JavaScript更改为:

$('.date, .text-box.single-line').datepicker({dateFormat: "dd/mm/yy"});

看看它是否有效。如果是这样,你可能想考虑修改为FooNo生成的文本框,因为.text-box.single-line看起来像一个生成类,可以由其他不打算作为日期选择器的文本框共享。

答案 1 :(得分:0)

要回答您的评论,您可以将Date.cshtml模板放在Views/Shared/EditorTemplates目录

中,使其成为全球模板