MVC3/Razor Client Validation Not firing
我正在尝试使用数据注释在 MVC3 中进行客户端验证。我看过类似的帖子,包括这个 MVC3 Client side validation not working for the answer。
我正在使用 EF 数据模型。我为我的验证创建了一个像这样的部分类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [MetadataType(typeof(Post_Validation))] public partial class Post { } public class Post_Validation { [Required(ErrorMessage ="Title is required")] [StringLength(5, ErrorMessage ="Title may not be longer than 5 characters")] public string Title { get; set; } [Required(ErrorMessage ="Text is required")] [DataType(DataType.MultilineText)] public string Text { get; set; } [Required(ErrorMessage ="Publish Date is required")] [DataType(DataType.DateTime)] public DateTime PublishDate { get; set; } } |
我的 cshtml 页面包括以下内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Create <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Post</legend> @Html.LabelFor(model => model.Title) @Html.EditorFor(model => model.Title) @Html.ValidationMessageFor(model => model.Title) @Html.LabelFor(model => model.Text) @Html.EditorFor(model => model.Text) @Html.ValidationMessageFor(model => model.Text) } |
网络配置:
1 |
布局:
1 2 3 4 | <head> @ViewBag.Title <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"> |
因此,多行文本注释起作用并创建了一个文本区域。但是没有一个验证在客户端工作。我不知道我可能会错过什么。有任何想法吗??如果需要,我可以发布更多信息。谢谢!
1.)
尝试将以下内容添加到您正在验证的视图中
1 2 | HtmlHelper.ClientValidationEnabled = true; HtmlHelper.UnobtrusiveJavaScriptEnabled = true; |
我觉得没有必要修改Web.config,所以你可以删除
1 |
祝你好运!此外,尝试输入一个已知的错误值以查看是否触发了客户端验证,所需的注释似乎不足以显示空白输入的消息。
2.)
将以下脚本放在您的视图中,它应该可以工作。
1 2 3 | @section Scripts { @Scripts.Render("~/bundles/jqueryval") } |
尝试使用公共对象声明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Post_Validation { [Required(ErrorMessage ="Title is required")] [StringLength(5, ErrorMessage ="Title may not be longer than 5 characters")] public object Title { get; set; } [Required(ErrorMessage ="Text is required")] [DataType(DataType.MultilineText)] public object Text { get; set; } [Required(ErrorMessage ="Publish Date is required")] [DataType(DataType.DateTime)] public object PublishDate { get; set; } } |