MVC3/Razor Client Validation Not firing

Posted by Jason Gerstorff on Stack Overflow See other posts from Stack Overflow or by Jason Gerstorff
Published on 2011-02-07T23:21:59Z Indexed on 2011/02/07 23:25 UTC
Read the original article Hit count: 295

Filed under:
|
|
|

I am trying to get client validation working in MVC3 using data annotations. I have looked at similar posts including this MVC3 Client side validation not working for the answer.

I'm using an EF data model. I created a partial class like this for my validations.

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

My cshtml page includes the following.

<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) { @Html.ValidationSummary(true) Post

    <div class="editor-label">
        @Html.LabelFor(model => model.Title)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Title)
        @Html.ValidationMessageFor(model => model.Title)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Text)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Text)
        @Html.ValidationMessageFor(model => model.Text)

Web Config:

<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

Layout:

<head>
<title>@ViewBag.Title</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"></script>

So, the Multiline Text annotation works and creates a text area. But none of the validations work client side. I don't know what i might be missing. Any ideas?? i can post more information if needed. Thanks!

© Stack Overflow or respective owner

Related posts about validation

Related posts about asp.net-mvc-3