2010-11-02 4 views
0

Contexte: application MVC 2 utilisant EF.question sur les annotations de données MVC, les modèles d'éditeur et la validation

Pourquoi cela fonctionne-t-il, mais pas tout? Le nom d'affichage est réglé sur "Nom de la cour" mais aucune validation n'est en cours, c'est-à-dire que je ne vois pas le message d'erreur. Je pense que les modèles d'éditeur interfèrent avec la validation, ou alors Model.IsValid ne fonctionne pas avec un modèle de vue complexe.

Des pensées?

CLASSE PARTIEL:

[MetadataType(typeof(CourtMetaData))] 
public partial class Court 
{ 

    private class CourtMetaData 
    { 

     [Required(ErrorMessage = "Court Name is required")] 
     [DisplayName("Court Name")] 
     public System.String CourtName 
     { 
      get; 
      set; 
     } 

    } 

} 

CONTRÔLEUR:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult New(CourtsNewViewModel court) 
{ 
    if (ModelState.IsValid) 
    { 
     db.AddCourt(court); 
     return View("List"); 
    } 
    else 
    { 
     return View("New", court); 
    } 
} 

VIEW Modèle:

public class CourtsNewViewModel : ViewModelBase 
{ 

    public Court Court {get; private set; } 

    public IEnumerable<CourtType> CourtTypes { get; private set; } 

    public CourtsNewViewModel() 
    { 
     CourtTypes = db.GetAllCourtTypes(); 
    } 

} 

VIEW:

Html.EditorFor(model => model.Court.CourtName, "LongString") 

TEMPLATE EDITOR:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %> 
<div class="editor-row"> 
<div class="editor-label"> 
    <%= Html.LabelFor(model => model) %> 
</div> 
<div class="editor-field"> 
    <%= Html.TextBoxFor(model => model)%> 
    <%= Html.ValidationMessageFor(model => model) %> 
</div> 
</div> 

Répondre

1

Voici le Gotcha:

public ActionResult New(CourtsNewViewModel court) 

La variable court est déjà utilisé comme vous avez une propriété Court sur votre modèle.

maintenant renommer le paramètre:

public ActionResult New(CourtsNewViewModel courtModel) 

Tout devrait fonctionner comme prévu.

Questions connexes