【发布时间】:2014-06-13 22:09:48
【问题描述】:
这是一个 Asp.net MVC 应用程序。我已经安装了 jQuery.alidation.Globalize 和 jQuery.UI.i18n 包,并在 web.config 中设置了固定文化“es-PY”
<globalization enableClientBasedCulture="true" uiCulture="es" culture="es-PY" />
我也为 jQuery 验证设置了这种文化:
$(document).ready(function () {
Globalize.culture('es-PY');
$.datepicker.setDefaults($.datepicker.regional["es"]);
$("input[type='date']").datepicker();
});
我还在我的模型中装饰了 Dates 属性,如下所示:
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public System.DateTime Fecha { get; set; }
我在显示 jQuery 日期选择器时遇到了问题,正如您从图像中看到的那样,我得到的不是一个,而是两个下拉日历,除了文本输入中的值设置为 dd/mm/aaaa,它应该使用 Fecha 属性渲染。当我尝试从日历中选择一个日期时,客户端验证失败,这让我感到不安,因为 es-PY 文化接受 dd/MM/yyyy 日期格式。
所以我的问题实际上是二合一的:为什么我要为输入框获取两个日历,我还应该怎么做才能在客户端浏览器中获得日期通过验证?
【问题讨论】:
-
你用过
EditorFor吗?如果您有一个电子邮件控制模板,它将使用它作为编辑器,然后您使用 datepicker 插件应用另一个。 -
@TiesonT。是的,我使用编辑器,当您说电子邮件控制模板时我不明白?
-
@Elio.Batista 如果要使用 datepicker 插件,请将
EditorFor更改为TextBoxFor- 否则 Razor 引擎将创建一个<input type="date" />元素,然后由浏览器决定决定做什么。 -
@Elio.Batista 对不起,“电子邮件”位是我没有注意我输入的内容;那应该是“日期控制模板”。例如,我使用 Telerik UI 控件,他们添加的其中一件事是 Shared 中的 EditorTemplate 文件夹。这意味着在使用
EditorFor时,DateTime属性会触发 Razor 引擎使用 Telerik 的 Date.cshtml 模板。
标签: jquery asp.net-mvc jquery-ui jquery-ui-datepicker