J'ai lu ce qui suit: http://weblogs.asp.net/imranbaloch/archive/2010/08/23/asp-net-mvc-jquery-validation-and-validationsummary.aspxMVC2/validation Jquery Questions
http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
Et ne peut toujours pas obtenir la validation jQuery pour travailler avec MVC2. Je peux obtenir un fonctionnement non jQuery mais quand je change les fichiers JS, cela ne fonctionne pas. Ça se passe le jour 3 et je suis complètement bloqué à ce point. Alors voici ce que j'ai. J'apprécie ton aide.
Site.master
<script src="<%= this.ResolveClientUrl("~/Resources/js/jquery-1.4.1.js") %>"
type="text/javascript"></script>
<script src="<%= this.ResolveClientUrl("~/Resources/js/jquery.validate.js") %>"
type="text/javascript"></script>
<script src="<%= this.ResolveClientUrl("~/Resources/js/MicrosoftMvcJqueryValidation.js") %>"
type="text/javascript"></script>
<script src="<%= this.ResolveClientUrl("~/Resources/js/ourJS--VERSION--.js") %>" type="text/javascript"></script>
<script src="<%= this.ResolveClientUrl("~/Resources/js/json2.js") %>" type="text/javascript"></script>
<link href="../../Resources/css/ourCSS--VERSION--.css" rel="stylesheet" type="text/css" />
ViewModel:
namespace OurNamespace
{
[ExcludeFromCodeCoverage]
public class OurDataModelView : PersistedDataModelView
{
public OurModelView() : base()
{
ID = -1;
StartDate = DateTime.MinValue;
EndDate = DateTime.MinValue;
Description = string.Empty;
Deleted = false;
}
[DisplayFormat(DataFormatString = "{0:MM/yyyy}")]
public DateTime? StartDate { get; set; }
[DisplayFormat(DataFormatString = "{0:MM/yyyy}")]
public DateTime? EndDate { get; set; }
[Required(ErrorMessage="Description is required.")]
[StringLength(250000, ErrorMessage = "A maximum of 250000 characters are allowed")]
public string Description { get; set; }
public int? ID { get; set; }
public bool Deleted { get; set; }
}
}
page ASPX
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
...
<% Html.RenderAction(WebConstants.ACTION_DISPLAY_HEADER, WebConstants.CONTROLLER, new { id = ViewData["ID"] }); %>
...
notre vue partielle que la validation se fait sur:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<OurNameSpace.OurDataModelView>" %>
...
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("", "", FormMethod.Post , new { id = "HeaderForm", onSubmit="return false;"})) { %>
<%: Html.ValidationSummary(false, "validation failed") %>
<%: Html.HiddenFor(model => model.ID) %>
<div class="form-row">
<div class="form-label">Description</div>
<div class="form-element"><%: Html.TextAreaFor(model => model.Description)%></div>
<div><%= Html.ValidationMessageFor(model => model.Description) %></div>
</div>
<div class="buttons">
<input id="Save" type="submit" class="save-button" value="" />
<div id="Cancel" class="cancel-button"></div>
</div>
<% } %>
...
* * SO par ne fonctionne pas ici est ce que je vois. la source de vue je vois:
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"Description","ReplaceValidationMessageContents":true,"ValidationMessageId":"Description_validationMessage","ValidationRules":[{"ErrorMessage":"A maximum of 250000 characters are allowed","ValidationParameters":{"minimumLength":0,"maximumLength":250000},"ValidationType":"stringLength"},{"ErrorMessage":"Description is required.","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"HeaderForm","ReplaceValidationSummary":true,"ValidationSummaryId":"validationSummary"});
//]]>
Cependant, la validation côté client n'apparaît pas. Je clique sur le type de zone de texte dans un char et le supprime de l'élément et rien ne se passe. Des idées pour déboguer cela?
J'ai fini par trouver le problème. Un des développeurs a fait une méthode JS qui convertirait nos modules sur la page en une structure div afin qu'il puisse aussi appliquer des styles. Cela a pris les modules enfants via une méthode .html() et l'a concaténée sur une chaîne avec la nouvelle structure. Bien sûr, cela a brisé toutes les liaisons de cet élément. Je finirai par poster comment j'ai débuggé ceci au cas où d'autres ont ce problème. –