gpt4 book ai didi

asp.net-mvc - 自定义格式化日期的 MVC3 不显眼的日期验证

转载 作者:行者123 更新时间:2023-12-04 10:56:11 24 4
gpt4 key购买 nike

我有一个日期字段(我使用的是 jquery ui datepicker),格式为我已经格式化的,如下所示:

View 模型

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FooDate { get; set; }

查看
@Html.EditorFor(m => m.FooDate)

这正确地显示了我想要的日期,例如 09-Nov-2011
我遇到的问题,当我按下提交时发生。它一直告诉我日期无效......这是有效的,你这个笨蛋!

有什么办法,我可以让 jquery/unobtrusive javascript 忽略此字段或允许此格式通过?到目前为止,我可以让表单工作的唯一方法是,如果我不格式化日期,或者使用 {0:d} 作为它的日期格式。

编辑 :
我创建了一个完全独立的布局+ View + Controller +模型来测试这个愚蠢的东西。仍然无法在 IE/Safari 中工作。
我有来自 nuget 的最新 jquery.validate/unobtrusive 文件。

我的 layout是空的。它只加载以下文件:
"jquery-1.7.min.js"
"jquery-ui-1.8.16.min.js"
"jquery.validate.min.js"
"jquery.validate.unobtrusive.min.js"

我的 TestViewModel 很简单:
public class TestViewModel
{
[Display(Name = "Test Date:")]
[DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? TestDate { get; set; }
}

我的 TestController 如下:
public class TestController : Controller
{
public ActionResult Index()
{
var m = new TestViewModel();
m.TestDate = DateTime.Now;
return View(m);
}
}

我的看法:
@using (Html.BeginForm())
{
ViewContext.FormContext.ValidationSummaryId = "valSumId";
@Html.ValidationSummary(false, "The following errors were found:");
@Html.AntiForgeryToken()

@Html.LabelFor(m => m.TestDate)
<input type="date" id="TestDate" value="@Model.TestDate.Value.ToString("dd/MMM/yyyy")" />
<input type="submit" />
}

没有工作。

你知道烦人的事情是什么吗?如果我改变 TestDate到一个字符串,它仍然失败。

最佳答案

我认为格式字符串中的连字符(“-”)有问题:

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]

似乎不显眼的验证默认不接受日期格式的连字符。

就我而言,我必须添加自定义客户端方法:
$.validator.methods.date = function (value, element) {
var s = value;
s = value.replace(/\-/g, '/');

return this.optional(element) || !/Invalid|NaN/.test(new Date(s));
};

已实现 here

关于asp.net-mvc - 自定义格式化日期的 MVC3 不显眼的日期验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com