Jquery MVC3数据类型。用于在HTML中输出错误类的日期编辑器

Jquery MVC3数据类型。用于在HTML中输出错误类的日期编辑器,jquery,asp.net-mvc-3,datetime,datepicker,editorfor,Jquery,Asp.net Mvc 3,Datetime,Datepicker,Editorfor,我有一个MVC3项目。我有两个模型课。让我们叫他们FooYes和FooNo 我为每一个都创建了控制器 我为两者都创建了CRUD视图 然后,我根据实现了jQuery日期选择器。我只实现了选择器部分,没有实现验证 在my FooYes edit.cshtml中,日期选择器工作正常。在FooNo的edit.cshtml中,它没有 我发现的唯一区别在于获得模型输出的类: FooYes在最终的html中如下所示: <input class="date" 以下是FooNo的模型: [Dis

我有一个MVC3项目。我有两个模型课。让我们叫他们FooYes和FooNo

我为每一个都创建了控制器

我为两者都创建了CRUD视图

然后,我根据实现了jQuery日期选择器。我只实现了选择器部分,没有实现验证

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

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

FooYes在最终的html中如下所示:

<input class="date" 
以下是FooNo的模型:

    [Display(Name = "Expiration Date")]
    [DataType(DataType.Date)]
    public virtual DateTime ExpirationDate { get; set; }
正如您所看到的,模型中的声明是相同的,所以不可能是这样。我甚至尝试将ExpirationDate属性从FooNo复制粘贴到FooYes中,并在FooYes内部将所有内容从FooNo复制到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>

@LabelFor(model=>model.CreationDate)
@EditorFor(model=>model.CreationDate)
@Html.ValidationMessageFor(model=>model.CreationDate)
这个和另一个之间唯一不同的是字段的名称

当我在最终结果中查看源html时,头、包含、链接,除了不起作用的那一个之外,所有内容都完全相同,class=被设置为文本内容而不是日期


我完全糊涂了。有人知道这是什么原因吗?

如果你真的只是遵循了,那么它不起作用的原因是设置日期选择器的选择器只包括
.date
。尝试将JavaScript更改为:

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

看看它是否有效。如果是这样,您可能需要考虑修改为FooNo生成的文本框,如
.text box。单行
似乎是一个生成类,它可能会被其他不打算作为日期选择器的文本框共享。

要回答您的评论,你可以将
Date.cshtml
模板放在
Views/Shared/EditorTemplates
目录中,使其成为全局模板,我有一种感觉,只要我发布了一个问题,我就会解决它。事情就这样发生了。问题是带有Date.cshtml部分视图的EditorTemplates文件夹需要位于每个Views/{controller}/文件夹中。所以我有一个新问题…有没有办法让一个全局EditorTemplates文件夹覆盖我所有的controller子文件夹?你真的应该问一个新问题,这样人们在搜索时可以找到它。StackOverflow是关于社区的,尽你的一份力量。但是,DMac回答了您的问题。如果您将模板放在Views\Shared\EditorTemplates中,则将为所有控制器拾取该模板:)
    <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>
$('.date, .text-box.single-line').datepicker({dateFormat: "dd/mm/yy"});