关于 asp.net mvc 3:MVC3/Razor Client Validation Not fire

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; }
}