如何将文本框绑定到日期时间字段但仅显示其日期部分(在 ASP.MVC 中)?

2024-05-02

我有一个视图,其中文本框绑定到日期时间模型字段。

风景:

@Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", id = "startDate" })

该模型:

[Required(ErrorMessageResourceType = typeof(Resources.ValidationMessages), ErrorMessageResourceName = "GeneralRequired")]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
[Display(Name = "StartDate", ResourceType = typeof(Resources.Something))]
public DateTime? StartDate { get; set; }

View 使用 jQuery datepicker 来处理日期输入。 Jquery 只生成日期,但据我所知,C# 中没有唯一的日期类型。

我还使用自定义 DateTime 模型绑定器,但它太大了,无法发布其代码 (tl;dr ;))。

例如,当用户在文本框中输入 15-01-2015 并将其发布到方法时,模型绑定器会将其正确转换为(转换为 15-01-2015 12:00)。问题是当验证被触发时,因为表单上有两个日期时间字段,如果用户仅输入其中之一,则操作方法将返回带有验证消息的视图。已输入的字段显然仍应填写。问题是,当控制器的操作方法返回视图时,它会将日期时间放入文本框中,而不仅仅是日期。

我们是否可以使用任何方法仅将日期而不是日期和时间传递到视图中的绑定字段?或者也许保留字段绑定但仅在文本框中显示 value.Date ?

EDIT:

我尝试应用 Hugo Delsing 的解决方案,但遇到了下一个问题。基本上我们将使用 EditorTemplate 作为模型的 DateTime 字段。 DateTime.cshtml 如下所示:

@model System.DateTime?
@if (Model == null)
{
    @Html.TextBox(
   string.Empty,
   "",
   new { @class = "datepicker", @type = "text" })
}
else
{
    @Html.TextBox(
   string.Empty,
   Model.ToString("dd-MM-yyyy"),
   new { @class = "datepicker", @type = "text" })
}

据我了解,问题出现在该行

Model.ToString("dd-MM-yyyy")

因为抛出的错误是

Shared\EditorTemplates\DateTime.cshtml(13):错误 CS1501:无重载 for 方法 'ToString' 需要 1 个参数

据我了解,就像总是评估 else 一样,对吗? 有没有任何解决方案可以实现我想要的目标,而无需将 if 语句移至主视图并构建类似的内容?

@if(model.StartDate.HasValue)
{
   @Html.EditorFor(model => model.StartDate, "TemplateFirst")
}
else
{
   @Html.EditorFor(model => model.StartDate, "TemplateSecond")
}

我正常工作的唯一方法是创建一个新的EditorTemplate.

在中创建视图~/Views/Shared/EditorTemplates called DateTime.cshtml并将以下内容放入其中。

@model System.DateTime?
@{
    var val = "";
    if (Model != null)
    {
        val = ((DateTime)Model).ToString("dd-MM-yyyy");
    }
}
@Html.TextBox(
   string.Empty, 
   val,
   new { @class="datepicker", @type = "text"})

现在,如果您调用默认编辑器模板,它将起作用并始终显示datepicker对于日期。

<div class="editor-container">
    <div class="editor-label">
        @Html.LabelFor(model => model.StartDate)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.StartDate)
        @Html.ValidationMessageFor(model => model.StartDate)
    </div>
</div>

The @type = "text"正如 Stephen Muecke 指出的那样,并不真正需要。这是默认设置。您可以将其添加/更改为date触发 HTML5 日期选择器。请记住,它可能会在“MM-dd-yyyy”中显示 HTML5 日期选择器,然后无法验证该值。

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

如何将文本框绑定到日期时间字段但仅显示其日期部分(在 ASP.MVC 中)? 的相关文章

  • 如何调用 google 的 getBasicProfile() 来仅单击按钮即可登录 google?

    我在我的网站上使用谷歌登录
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • Jquery 在 DIV 中进行多重加载

    这是我的代码 right load textes html nicolas right load textes html antoine 问题是内容divantoine覆盖了右边div nicolas加载的内容div div right l
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • C# 编译器如何决定发出可重定向的程序集引用?

    NET Compact Framework 引入了可重定向程序集引用 现在用于支持可移植类库 基本上 编译器会发出以下 MSIL assembly extern retargetable mscorlib publickeytoken 7C
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • 编辑用户个人资料详细信息

    如何创建用于编辑用户自定义信息的操作和视图 授权基于 VS 通过 MVC 4 项目创建的成员资格 我添加了其他列 例如 FirstName 等 我需要并且注册工作正常 但我不知道如何让此属性显示在视图中 Html EditorFor并将更改
  • std::bind 重载解析

    下面的代码工作正常 include
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 将 HTML 表格导出到 Excel

    我在 ASP NET MVC 视图页面上有 HTML 表 现在我必须将该表导出到 Excel 1 我使用部分视图 Inquiries ascx 来显示数据库中的表数据 使用LINQ to Entity 2 我还使用了 UITableFilt
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat
  • 使用 JQuery 根据下拉列表选择的值显示/隐藏控件

    我正在尝试使用 JQuery 根据下拉菜单的选定索引显示 隐藏 div 标签 但它不起作用 任何帮助将不胜感激 Thanks
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据

随机推荐

  • font-face 声明中还需要 eot、ttf 和 svg 吗?

    到目前为止 我一直使用 Paul Irish 的防弹字体语法 http www paulirish com 2009 bulletproof font face implementation syntax 但我只是在寻找对 woff 和 w
  • 将表中的行相对于另一个表拖放[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 嘿 我有两个行数相同的表 例如 如果我尝试对 tableOne 中的一行 例如 row 3 进行排序 则其他表 tabl
  • printf 字符串,可变长度项

    define SIZE 9 int number 5 char letters SIZE this wont be null terminated char fmt string 20 sprintf fmt string d ds SIZ
  • scala-js 如何与 sbt-web 集成?

    我想用scala js https github com scala js scala js with sbt web https github com sbt sbt web以这样的方式 它可以被编译以生成添加到资产管道中的 JavaSc
  • 如何用 PHP 编写固定宽度的文本文件

    我正在尝试做一些应该很容易的事情 但遇到了问题 我想要做的就是从 MySQL 表生成报告 并将其作为纯 txt 文件 我需要文件固定宽度 因此一切都排列整齐并且看起来不错 我将使用 courier 字体 它只是一个准系统表格 但我如何才能真
  • 当应用程序崩溃时,Android Studio ADB 会清除 logcat 文件!哦美伊

    刚刚升级了最新的Android Studio 现在 当应用程序崩溃时 日志文件 adb logcat 就会消失 它不仅停止记录整个日志似乎突然被删除了 对于调试来说不太酷 我需要设置日志缓存大小或其他什么吗 还注意到调试器需要很长时间来收集
  • DBI:在 eval 中引发错误

    这个问题参考了池上的评论 But if you re going to put an eval around every statement just use RaiseError gt 0 in this thread https sta
  • 在 Django 中延迟文件下载的正确方法

    我有一个基于类的视图 它触发用户编写和下载报告 通常在def get我刚刚编译的班级报告 添加response Content Disposition attachment filename somefilename pdf 并向用户返回响
  • 如何在Java程序中检索环境变量的修改值(外部修改的)?

    是否可以在 Java 程序中检索环境变量的修改值 我尝试使用System getenv 但新的值并没有体现在程序中 场景是这样的 该程序检索环境变量的值 当程序仍在运行时 该变量的值可以从外部更改 甚至可以是手动过程 例如在 Windows
  • 如何使用 MFC 禁用顶级菜单项并使其变灰

    我有一个对话框应用程序 我希望在对话框顶部有可单击的菜单项 这些项目不显示下拉菜单 但实际上运行关联的命令 我通过在对话框属性中设置 Popup False 并分配消息 ID 来做到这一点 但我的问题是 当项目可点击没有意义时 无法正确禁用
  • iOS 6 调试控制台不见了?

    当我进行故障排除时 我曾经使用移动 Safari 的 调试控制台 来打印 console log 消息 在 iOS 6 中 Safari 的高级设置中 Web 检查器 取代了 调试控制台 不幸的是 我的公司不允许我将我们正在测试的手机插入我
  • NetworkX节点属性图

    我使用 networkx 进行可视化 当我使用该功能时我看到 绘制网络x边缘标签 我可以检索边缘的标签 我想在节点上打印属性 而不是标签 几乎尝试一切 仍然卡住了 如果我每个节点有 5 个属性 我是否可以在每个节点上打印特定属性 例如 如果
  • C++ 中 -> 是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的点 运算符和 gt 有什么区别 https stackoverflow com questions 1238613 what is the difference between the dot
  • 使用 Javascript 防止刷新“跳转”

    我注意到 如果您在一个页面上并且向下滚动了很多 如果您刷新页面 大多数浏览器会将您跳回到您的位置 有什么办法可以防止这种情况发生吗 我研究了两个选项 但在 Webkit Firefox 上都不一致 window scrollTo 0 1 h
  • 了解 FacesContext 实例化详细信息

    莫贾拉 2 2 12 这是接管实例化的代码段面孔上下文 http grepcode com file repo1 maven org maven2 javax faces jsf api 2 1 javax faces webapp Fac
  • .NET 3.5 DirectoryServices.AccountManagement 中的不明确名称解析 (anr=*ma*) 等效项

    淘汰旧的 引进新的 呃 我正在搁置旧的 vb net asp net 2 0 asmx 服务 转而使用闪亮的新 c net asp net 4 0 WCF 服务 我的旧服务使用 System DirectoryServices Direct
  • 如何在 AWS Insights 上可视化由多个维度聚合的时间序列数据?

    我想使用 cloudwatch Insights 来可视化主机随时间变化的平均延迟的多线图 每个主机一根线 此统计查询提取延迟并按主机将其聚合在 10 分钟的存储桶中 但它不会生成任何可视化 stats avg latencyMS by b
  • 不要在异常堆栈中显示 Python raise-line

    当我在 Python 库中引发自己的异常时 异常堆栈将引发行本身显示为堆栈的最后一项 这显然不是一个错误 在概念上是正确的 但是当您在外部使用代码 例如作为模块 时 它会将重点放在对调试无用的东西上 有没有办法避免这种情况并强制 Pytho
  • 如何在 for 循环中跳过一些迭代

    在 python 中 我通常简单地循环遍历范围 for i in range 100 do something 但现在我想跳过循环中的几个步骤 更具体地说 我想要类似的东西continue 10 这样它就会跳过整个循环并将计数器增加 10
  • 如何将文本框绑定到日期时间字段但仅显示其日期部分(在 ASP.MVC 中)?

    我有一个视图 其中文本框绑定到日期时间模型字段 风景 Html TextBoxFor model gt model StartDate new class datepicker id startDate 该模型 Required Error