【问题标题】:Issue with jQuery datepicker and client side validation for dates in ASP.net MVC 4jQuery datepicker 和 ASP.net MVC 4 中日期的客户端验证问题
【发布时间】: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 引擎将创建一个 &lt;input type="date" /&gt; 元素,然后由浏览器决定决定做什么。
  • @Elio.Batista 对不起,“电子邮件”位是我没有注意我输入的内容;那应该是“日期控制模板”。例如,我使用 Telerik UI 控件,他们添加的其中一件事是 Shared 中的 EditorTemplate 文件夹。这意味着在使用EditorFor 时,DateTime 属性会触发 Razor 引擎使用 Telerik 的 Date.cshtml 模板。

标签: jquery asp.net-mvc jquery-ui jquery-ui-datepicker


【解决方案1】:

如果您想使用 datepicker 插件,请将 EditorFor 更改为 TextBoxFor - 否则 Razor 引擎将创建一个 &lt;input type="date" /&gt; 元素,然后由浏览器决定如何操作。

例如,我使用 Telerik UI 控件,他们添加的其中一项内容是 Shared 中的 EditorTemplate 文件夹。这意味着在使用 EditorFor 时,DateTime 属性会触发 Razor 引擎使用 Telerik 的 DateTime.cshtmlDate.cshtml(取决于数据注释类型)模板。

如果您有任何属性映射到编辑器模板的名称,情况也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多