I have following ViewModel:
public class Bulletin1ViewModel
    {
        [Required]
        public String NumberDelegations { get; set; }
        [Required]
        public String TravelPlans { get; set; }
    }
Which I want to use in my View:
     @using ErasProject.Models
        @model ErasProject.Models.Bulletin1ViewModel
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<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)
            <fieldset>
            <p>
            @Html.EditorFor(model => model.NumberDelegations)
            @Html.ValidationMessageFor(model => model.NumberDelegations)
            </p>
            <p>
            @Html.EditorFor(model => model.TravelPlans)
            @Html.ValidationMessageFor(model => model.TravelPlans)
            </p>
            <p>
            <input type="submit" value="Submit" />
            </p>
            </fieldset>
    }
But my validation isn't triggered. Neither client-side nor server-side. Anyone could have an idea why? Thanks.
you need to add both jquery and jQuery Validation plugin (and optionally, the unobtrusive library)
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"           type="text/javascript"></script>
<script src="http://ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
so, your view will be as:
@using ErasProject.Models
@model ErasProject.Models.Bulletin1ViewModel
<script src="jquery.min.js"></script>
<script src="jQuery.Validate.min.js"></script>
<script src="jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm())
{ 
    @Html.ValidationSummary(true)
    <fieldset>
    <p>
    @Html.EditorFor(model => model.NumberDelegations)
    @Html.ValidationMessageFor(model => model.NumberDelegations)
    </p>
    <p>
    @Html.EditorFor(model => model.TravelPlans)
    @Html.ValidationMessageFor(model => model.TravelPlans)
    </p>
    <p>
    <input type="submit" value="Submit" />
    </p>
    </fieldset>
}
Just added your object and created a Add Action like:
public ActionResult Add()
{
    return View();
}
and created a View using the Create template and the Bulletin1ViewModel class that look like this:
@model WebApp_MVC3.Models.Bulletin1ViewModel
@{
    ViewBag.Title = "Add";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Add</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)
    <fieldset>
        <legend>Bulletin1ViewModel</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.NumberDelegations)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.NumberDelegations)
            @Html.ValidationMessageFor(model => model.NumberDelegations)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.TravelPlans)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.TravelPlans)
            @Html.ValidationMessageFor(model => model.TravelPlans)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
without doing anything more, the result is:
original file

I would re-check the javascript libraries...
Don't use
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
but just drag and drop the following .js files from your Scripts folder in your project:
jquery-1.4.4.min.js
jquery.validate.min.js
jquery.validate.unobtrusive.min.js
That will make sure your references to the js files are correct.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With