【发布时间】:2013-04-16 15:17:06
【问题描述】:
使用这个模型:
public class Holiday
{
[Required]
public DateTime From { get; set; }
}
有了这个观点:
@model Holiday
@using System.Web.Optimization
@{
ViewBag.Title = "Request";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Holiday Request</legend>
<div class="editor-label">
@Html.LabelFor(model => model.From)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.From)
@Html.ValidationMessageFor(model => model.From)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
如果我输入文本,我会得到一个无效的日期。如果我将该字段留空,我也会收到一条消息。但是,如果我输入了一个有效的日期,例如2013/20/20,我该如何更改?我认为这可能与文化有关,但这在所有文化中都是无效的。
源 HTML
<form action="/" method="post">
<fieldset>
<legend>Holiday Request</legend>
<div class="editor-label">
<label for="From">From</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-date="The field From must be a date." data-val-required="The From field is required." data-val-weekdaydate="Must be a working day" id="From" name="From" type="datetime" value="" />
<span class="field-validation-valid" data-valmsg-for="From" data-valmsg-replace="true"></span>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</form>
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
</body>
</html>
【问题讨论】:
-
既然我们在谈论 JavaScript,请显示 渲染的 HTML 输出以及任何 jQuery 代码。
-
@Sparky 这是开箱即用的验证,大部分内容都在
jQuery.Validation,我会发布它,但我看不出这对任何人有什么帮助:) -
@Sparky 查看我对输出的编辑
-
如果您输入像 2013/04/16 这样的日期会发生什么?那样有用吗?似乎您遇到了 DateTime.Parse 或 DateTime.TryParse 是如何实现的问题。也许您需要在向其抛出 ValidationMessageFor 之前进行一些自己的自定义解析和/或验证。
-
您发布的 html 完全符合预期。 jsfiddle。如果您在日期字段中输入
2013/20/20,则会收到验证错误。但是data-val-weekdaydate是什么?我在验证插件中的任何地方都没有看到,我正在查看 jQuery.Validate 和 jQuery.validate.unobtrusive 的最新源代码。那是自定义验证方法吗?你的来源在哪里?
标签: asp.net-mvc jquery-validate