ASP MVC 日期时间验证错误

2023-12-05

在 asp.net MVC 5 中,我有一个显示来自 DTO 对象的数据的表单:

public class FieldDTO
{
    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime StartFieldDate { get; set; }

    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime StopFieldDate { get; set; }

    public String FieldName { get; set; }

    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime StartJob { get; set; }

    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime StopJob { get; set; }
}

在我的控制器类中,我有:

public ActionResult Create()
{
   var model = new FieldDTO();
   model.StartFieldDate = DateTime.Now;
   model.StopFieldDate = DateTime.Now;
   model.StartJob = DateTime.Now;
   model.StopJob = DateTime.Now;
   ...
   ...
}

在视图中,我有:

<div class="col-md-10">
     @Html.EditorFor(model => model.StartFieldDate, new { htmlAttributes = new { @class = "form-control datepicker" } })
     @Html.ValidationMessageFor(model => model.DataTurno, "", new { @class = "text-danger" })
 </div>

而且,我对另一个剃须刀有相同的代码datetime控制器。我已经添加了datepickerjQuery UI DatePicker 的类。

在表单中,如果我单击“创建”按钮,而不修改任何控件,一切正常。 当我改变最后两个之一时datetime选择器,然后单击“创建”按钮,我收到验证错误:The field xxxx must be a date.

我不明白问题是什么,因为所有控件都是以相同的方式生成的。


有许多潜在的问题。

首先是[DataType(DataType.DateTime)] and [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]属性仅在使用时适用@Html.EditorFor()并用于呈现 HTML5 日期选择器的浏览器实现(它添加了type="date"属性)。由于您使用的是 jQueryUI 日期选择器,因此不需要这些属性。无论如何,如果您确实想要浏览器 HTML5 日期选择器,那么格式需要是DataFormatString = "{0:yyyy-MM-dd}"(ISO 格式)才能正常工作。另请注意,HTML5 日期选择器仅在现代浏览器中受支持,FireFox 中尚不支持(参考比较)

如果您使用 jQueryUI datepicker 那么它可以是

@Html.TextBoxFor(m => m.StartFieldDate, new { @class = "form-control datepicker" })

并在日期选择器脚本中设置格式

$('.datepicker').datepicker({ dateFormat: 'dd/mm/yy' });

验证消息可能来自两个问题之一。在客户端,jquery-validate.js使用验证日期MM/dd/yyyy格式。您可以覆盖它来使用dd/MM/yyyy通过包括jquery 全球化或添加以下脚本

$.validator.addMethod('date', function (value, element) {
  if (this.optional(element)) {
    return true;
  }
  var valid = true;
  try {
    $.datepicker.parseDate('dd/mm/yy', value);
  }
  catch (err) {
    valid = false;
  }
  return valid;
});
$('.datepicker').datepicker({ dateFormat: 'dd/mm/yy' });

另一个潜在的问题是服务器端验证。如果服务器区域性不接受以下格式的日期dd/MM/yyyy (e.g. <globalization culture="en-AU" uiCulture="en-AU"/>)那么服务器上可能会抛出验证错误,在这种情况下,您需要创建一个自定义ModelBinder for DateTime.

旁注:我假设@Html.ValidationMessageFor(m => m.DataTurno, ..)是一个拼写错误(您显示的模型不包含属性DataTurno)而且它真的@Html.ValidationMessageFor(m => m.StartFieldDate, ..)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP MVC 日期时间验证错误 的相关文章

  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • jQuery:处理 getJSON() 中的错误?

    使用 jQuery 时如何处理 500 错误getJSON http api jquery com jQuery getJSON 有几个关于错误处理的问题getJSON and https stackoverflow com questio
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 使用 Jquery 清除 5 个空 TD

    我有一个正在填充的动态表 我知道我不应该这样做 但是你会如何连续找到 5 个空 TD 并隐藏它们呢 因此 如果行包含 5 个空 TD 则不显示 TD 我想删除每个实例 td td td td td td td td td td 在 DOM
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • 重载<<的返回值

    include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个
  • 循环内的异步性

    我正在使用 jQuery getJSON 用于从一组实用程序的给定 URL 检索数据的 API 我真的很想找到一种为每个实用程序重用代码 完全相同 的方法 由于循环的执行与 ajax 调用无关 因此我无法找到保留循环值的方法 我知道这个描述

随机推荐

  • 有没有办法在main.js中访问vue js Vue Session

    我在 main js 中进行了以下设置 import Vue from vue import App from App vue import VueRouter from vue router import Home from views
  • 读取android系统文件

    我尝试了很多读取文件的解决方案 但没有一个有效 我需要一种方法来读取系统文件并在 toast 或对话框中显示文本 当然我的应用程序有root权限 单击复选框后 我必须在 toast 中显示 eoc status 的内容 例如 Runtime
  • 添加一个从未调用过的函数可以改善行为吗?

    下面的代码会产生不良结果 20010101 20010102 当取消注释 String func 时 它会产生更好的结果 但不是我的实现 20010101 1 5 20010102 2 5 然而 该 String 函数从未被调用 我看到 D
  • Facebook 操作脚本 3 API 登录/注销问题

    我正在使用 Flash builder 4 5 AIR 2 6 制作适用于 Android 的移动 AIR 应用程序 Facebook动作脚本3 API最新版本 我遇到登录 注销问题 我只能登录一次 然后我的数据会以某种方式缓存 Faceb
  • Visual Studio 中的远指针声明

    我以这种方式有一个远指针声明 char far p 但 Visual Studio 2008 给了我 error C2146 missing before identifier p 任何帮助表示赞赏 far是 16 位 Microsoft
  • 如何在C#中创建和使用dll文件

    我目前正在尝试学习如何用 C 和 C 编写和使用适用于 Windows 的 dll 文件 我想一旦我理解了其中一种语言 我就能很容易地弄清楚另一种语言 我今天搜索了 5 个多小时 但没有找到有效的 dll 指南 它们要么已经过时并且拒绝与我
  • 格雷特函数定义

    我想定义一个更大的函数 它从比之前的列表项大的列表项中进行选择 例如 greaters 1 3 2 4 3 4 5 3 4 4 5 greaters 5 10 6 11 7 12 10 11 12 我想出的定义是这样的 greaters O
  • 使用 iPhone SDK 查找 SRV 记录

    在 Windows 或 Mac OS X 终端中 如果您键入 nslookup type SRV xmpp server tcp gmail com 例如 您将收到一堆与不同谷歌聊天服务器相关的 SRV 记录 有谁有这方面的经验并且可能知道
  • 在 Firefox 开发者工具中使用外部编辑器?

    如果我单击带有行号的文件名 script js 100 4 在 Firefox 开发者工具中 我会看到一个集成编辑器 有没有办法打开外部编辑器 在正确的行 例如 VS Code 有一个类似的问题Chrome从 2013 年开始 这还不可能
  • 使用 Scapy 解码基于 UDP 的 RTP

    如何使用 Scapy 2 3 2 解码 和操作 基于 UDP 的 RTP 我有一个名为 rtp pcap 的捕获文件 其中包含到 224 0 1 11 5016 的 RTP 音频流 当您启用 RTP over UDP 协议时 默认关闭 Wi
  • 动作脚本3睡眠?

    我有一个简单的动作脚本函数 var string String TEXT REMOVED var myArray Array string split addEventListener Event ENTER FRAME frameLoop
  • 使用 ASP.net Handler 动态创建 JS 文件

    我有很多客户 我想给他们脚本 所以我想根据他们的客户 ID 创建 JS 文件 这样我就可以返回并直接在客户端执行 客户端可以是任何人 PHP Html ASP net 问题是 当我浏览此链接时 它给了我 JS 字符串 但在客户端 此脚本没有
  • 使用 LINQ 选择数组中最小、最常见的数字

    如果我有一个未排序的数组 其中包含多对相同的数字 我如何找到最常见数字中的最小者 int arr new int 8 6 5 2 5 9 6 9 2 3 unsorted array Array Sort arr I could sort
  • Mobilock 应用程序在 BOOT_COMPLETED 广播之前启动...这怎么可能?

    有一个名为 Mobilock 的信息亭应用程序 这个应用程序的启动速度比我自己的以 BOOT COMPLETED 广播启动的应用程序要快得多 几乎提前了 5 秒 我自己的应用程序具有最高优先级 即整数的最大值 所以这不是优先级的问题 这些人
  • 在 C 中检查变量是字符串还是整数

    我正在编写一个C程序 我必须通过命令行读取参数 如何检查传递给程序的参数是字符串 即字符数组 还是整数 我可以在 C 中使用任何即时调用吗 命令行传递的参数总是字符串 如果你想检查这个字符串是否可以转换为整数 你可以使用strtol cha
  • JPEG 图像中的透明背景

    如何在 JPEG 图像上设置透明背景 这是很多同事的疑问 在 Windows 上使用画图的解决方案是什么 还有哪些其他简单的替代方案 您无法将 JPEG 图像设为透明 您应该使用允许透明的格式 例如 GIF 或 PNG 画图将打开这些文件
  • 无法更改 IOS 上的 .NET MAUI Blazor 启动屏幕

    我尝试遵循有关 NET MAUI 启动画面的所有可用教程 但我无法让我的应用程序显示自定义启动画面 重现问题的步骤 在 PC 上打开 Microsoft Visual Studio 2022 创建新的 NET MAUI Blazor 应用程
  • 有没有办法从 WordPress 的链接生成中排除域

    我有一个在 domain com 上响应的网站 即将x domain com or y domain com应该产生相同的网页 我不知道 是什么 但它是重要的信息 因为我们根据它来跟踪事物 当迁移到 WordPress 时 我们遇到了一个非
  • 未使用 MS_SQL JDBC 为存储过程定义参数 @x

    我正在尝试在方法中使用 SQL Server JDBC 执行存储过程 Connection connection String sp name Map
  • ASP MVC 日期时间验证错误

    在 asp net MVC 5 中 我有一个显示来自 DTO 对象的数据的表单 public class FieldDTO DataType DataType DateTime DisplayFormat ApplyFormatInEdit