【问题标题】:MVC 5 Create Fixed format editorfor for datetimeMVC 5 为日期时间创建固定格式编辑器
【发布时间】:2018-04-06 10:21:19
【问题描述】:

我正在寻找显示允许用户编辑日期时间值的 TextBox 的正确方法。

目前我可以使用 DataAnnotations 显示我想要的值。

[DisplayFormat(DataFormatString = "{0:{0:HH:mm:ss dd/MM/yyyy}}", ApplyFormatInEditMode = true)]
public DateTime TimeStamp_Start { get; set; }

MVC/剃刀:

@Html.EditorFor(m => m.TimeStamp_Start)

然后我得到正确的视觉效果:

但是现在的问题是这个可以编辑成错误的格式,如下:

我如何创建一个@Html.EditorFor 对象来显示第一张图片中的日期,但在编辑时只允许填写这种格式:{xx/xx/xxxx xx:xx:xx}?

我希望日期格式的 '/'、':' 和 ' '(空格)值保持不变,用户键入的文本可以填补空白。 我在其他网站上看到过,但似乎找不到它的 MVC/Razor 代码。

【问题讨论】:

  • 你需要使用 jquery datetime 插件,或者渲染浏览器 HTML-5 datetimepicker(仅部分浏览器支持)
  • @StephenMuecke 来自 jquery 的 datetimepickers 需要做很多工作才能正确,而且它不适合网站的设计。所以这种方式我想做一个简单快速的使用方式。
  • 添加一个脚本和一行代码工作量太大?您无法控制用户在文本框中输入的内容(至少没有 javascript),但您始终可以使用 mvc 内置的客户端验证来验证格式
  • 是的,但是我已经查看了如何将时间变量也添加到日期选择器中,整个默认设置使它看起来很难看,并且不适合网站的设计。我已经用预定义的固定格式看过它 1000 次,我想实现该解决方案。我去看看我是否可以自己用javascript编写来创建这样一个固定的解决方案。

标签: c# razor asp.net-mvc-5 editorformodel


【解决方案1】:

请删除数据注释 并在cshtml中使用它

 @Html.TextBoxFor(x => x.TimeStamp_Start, new { type="date" })

呈现 html5 输入类型。 您可以使用 datetime-local 来获取用户机器时间。

从这里检查 html 输入类型 https://www.w3schools.com/html/html_form_input_types.asp

【讨论】:

  • 当我删除数据注释并将值更改为您的建议时(我使用“日期时间”,因为该值具有时间值,否则 MVC 不会显示它)。但是我仍然可以编辑该字段,并且正斜杠和“:”不会留在那里。
  • 忘记我的解决方案;使用你的并尝试通过 jquery 日期时间选择器进行编辑。让我更新,我可以在接下来的 2 天内解决它。
  • 我目前正在使用以下方式,这样浏览器会警告输入错误。它仍然不完全是我想要的,但它可以防止一些用户错误。 @Html.TextBoxFor(m => m.TimeStamp_Start, , "{0:dd/MM/yyyy HH:mm:ss}", new { pattern = @"[0-3][0-9]\/[0-1][0-9]\/[0-9]{4} [0-1][0-9]:[0-5][0-9]:[0-5][0-9]" })
  • 不错的方法,您尝试过 jquery 日期时间选择器吗?
  • 是的,但我觉得它很不好用。另外,它不容易适应我的网站设计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
相关资源
最近更新 更多