我有一个MVC3项目。我有2个模范班。我们叫它们FooYes和fooo。
我为每一个创建了控制器。
我为两者都创建了CRUD视图。
然后我根据这个链接实现了jQuery DatePicker。我只实现了选择器部分,而没有实现验证。在我的FooYes编辑。CSHTML日期选择器工作正常。在编辑中。
我发现唯一的区别是在获得模型输出的类中:
FooYes在最后的html中是这样的:
<input class="date"
fooo是这样的:
<input class="text-box single-line"
下面是FooYes的模型:
[Display(Name = "Creation Date")]
[DataType(DataType.Date)]
public virtual DateTime CreationDate { get; set; }
下面是foo的模型:
[Display(Name = "Expiration Date")]
[DataType(DataType.Date)]
public virtual DateTime ExpirationDate { get; set; }
正如您所看到的,模型中的声明是相同的,所以不可能是那样。我甚至尝试将ExpirationDate属性从fooo复制粘贴到FooYes中,并将fooo到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=被设置为文本而不是日期。
我完全糊涂了。有人知道是什么引起的吗?
如果您真的只是遵循这个链接,那么它不起作用的原因是因为设置日期拾取器的选择器只包含.date
。尝试将JavaScript更改为:
$('.date, .text-box.single-line').datepicker({dateFormat: "dd/mm/yy"});
看看它是否有效。如果是这样,您可能需要考虑修改为fooo生成的文本框,因为.text-box.single-line
看起来像一个生成类,它可能被其他不打算作为日期拾取器的文本框共享。
要回答您的评论,您可以通过将Date.cshtml
模板放入Views/Shared/EditorTemplates
目录