jzm*_*jzm 7 asp.net-mvc datepicker jquery-validate unobtrusive-validation asp.net-mvc-3
我有一个日期字段(我使用jquery ui datepicker)在我格式化的表单中,如下所示:
视图模型
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime FooDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图
@Html.EditorFor(m => m.FooDate)
Run Code Online (Sandbox Code Playgroud)
这正确地显示了我想要它的日期,例如 09-Nov-2011
我收到的问题发生在我按提交时.它一直告诉我日期无效....这是有效的,你这个蠢事!
有什么办法,我可以得到jquery/unobtrusive javascript忽略这个字段或允许这种格式通过?到目前为止,我可以让表单工作的唯一方法是,如果我不格式化日期,或使用{0:d}作为日期格式.
编辑:我已经创建了一个完全独立的布局+视图+控制器+模型来测试这个愚蠢的东西.仍然无法在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"
Run Code Online (Sandbox Code Playgroud)
我的TestViewModel很简单:
public class TestViewModel
{
[Display(Name = "Test Date:")]
[DisplayFormat(DataFormatString = "{0:dd/MMM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? TestDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的TestController如下:
public class TestController : Controller
{
public ActionResult Index()
{
var m = new TestViewModel();
m.TestDate = DateTime.Now;
return View(m);
}
}
Run Code Online (Sandbox Code Playgroud)
我的看法:
@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" />
}
Run Code Online (Sandbox Code Playgroud)
没有工作.
你知道烦人的是什么吗?如果我更改TestDate为字符串,它仍然会失败.
所以看起来jquery.validate.unobtrusive有问题input type="date"。这肯定是一个只出现在IE和Safari中的bug。
当我删除不显眼的 js 文件时,它提交了表单。当我重新添加不显眼的 js 文件并将输入类型更改为文本时,它起作用了。
烦人的错误。需要修复。
| 归档时间: |
|
| 查看次数: |
14871 次 |
| 最近记录: |