2011-05-16 24 views
5

He siguiente modelo de vista:ASP.NET MVC3 Validación problema

public class Bulletin1ViewModel 
    { 
     [Required] 
     public String NumberDelegations { get; set; } 

     [Required] 
     public String TravelPlans { get; set; } 
    } 

Qué quiero usar en mi opinión:

 @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> 

    } 

Pero mi validación no se dispara. Ni del lado del cliente ni del lado del servidor. ¿Alguien podría tener una idea de por qué? Gracias.

Respuesta

5

es necesario agregar tanto jQuery y el plugin jQuery Validación (y, opcionalmente, la biblioteca discreta)

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

es así, su visión será como:

@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> 

} 

acaba de añadir a su objeto y creó una acción Add como:

public ActionResult Add() 
{ 
    return View(); 
} 

y crea una vista utilizando la plantilla Create y la clase Bulletin1ViewModel que se parecen a esto:

@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> 

sin hacer nada más, el resultado es:

original file

enter image description here

I volvería a verificar las bibliotecas de JavaScript ...

+0

Ya están agregados. Es una aplicación MVC3 con motor RazorView. Y he comprobado que están realmente presentes. – Hanz

+0

se cargan correctamente cuando ve el origen de su página? construiste? – balexandre

+0

Olvidé agregarlos en mi publicación, pero están allí y todavía no funciona ... – Hanz

1

No utilice

<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 

pero sólo arrastrar y soltar los siguientes archivos .js desde un script carpeta en su proyecto:

jquery-1.4.4.min.js 
jquery.validate.min.js 
jquery.validate.unobtrusive.min.js 

que se asegurará de que sus referencias a los archivos js son correctos.

+0

hacer una actualización usando Web Platform Installer o usando el power shell ... jQuery ya está en la versión 1.6.1 :) – balexandre

Cuestiones relacionadas