2016-07-28 17 views
2

Ich habe eine Modellklasse mit 6 Feldern (alle mit erforderlicher Feldvalidierung). Ich habe zwei Ansichten, die dieses Modell verwenden. Ich habe drei Felder in einer Ansicht (sagen wir abc.cshtml) und alle sechs in einer anderen (sagen wir xyz.cshtml) Das Problem ist, wenn ich das Formular in abc.cshtml übergebe und ModelState.IsValid Eigenschaft in überprüfen Controller, es validiert alle Felder, die nicht in der Ansicht angezeigt werden, daher scheint diese Eigenschaft falsch zu sein. Das ist mein ModellMVC Model Validation Multiple View

public class UserModel 
    { 
     [Required(ErrorMessage = "Enter UserName")] 
     public string UserName { get; set; } 

     [Required(ErrorMessage = "Enter Password")] 
     public string Password { get; set; } 

     [Required(ErrorMessage = "Enter Firstname")] 
     public string Firstname { get; set; } 

     [Required(ErrorMessage = "Enter LastName")] 
     public string LastName { get; set; } 

     [Required(ErrorMessage = "Enter Contact")] 
     public string Contact { get; set; } 

     [Required(ErrorMessage = "Enter Address")] 
     public string Address { get; set; } 
    } 

ich nur Benutzername, Vorname und Nachname in einer Ansicht und alle sechs in einem anderen haben. Wie kann ich dieses Problem angehen?

+0

erstellen 2 separate Ansicht Modelle (Sie sollten nicht Ihr Datenmodell in einer Ansicht mit für die Bearbeitung verwenden) –

+0

Haben Sie lesen Sie [Beitrag] (http://stackoverflow.com/questions/10983118/mvc-3-razor-partial-validation-of-model)? Ich bin mir nicht sicher, ob es das gleiche ist, was Sie hier erreichen wollen, aber ich glaube, es bringt einige relevante Informationen. –

Antwort

3
public class BaseModel{ 
     [Required(ErrorMessage = "Enter Firstname")] 
     public string Firstname { get; set; } 

     [Required(ErrorMessage = "Enter LastName")] 
     public string LastName { get; set; } 

     [Required(ErrorMessage = "Enter UserName")] 
     public string UserName { get; set; } 


} 

    public class UserModel : BaseModel 
    { 

     [Required(ErrorMessage = "Enter Password")] 
     public string Password { get; set; } 

     [Required(ErrorMessage = "Enter Contact")] 
     public string Contact { get; set; } 

     [Required(ErrorMessage = "Enter Address")] 
     public string Address { get; set; } 
    } 

Hope it will help you to reduce redundancy and work with different view also , i think that is he best way to tackle this kind of problem Thanks 
+0

das ist eine nette Methode –

+0

@ARUN Danke ... –

0

Im Falle der Einreichung von 3 Eigenschaften, bevor validate Modell Zustand, haben Sie einen Fehler für andere Eigenschaften.

können Sie Modellfehler entfernen, indem Sie so etwas wie dies zu tun:

if (ModelState.ContainsKey("{key}")) 
    ModelState["{key}"].Errors.Clear(); 

Key: Eigenschaft Name

In Ihrem Fall gibt es drei Eigenschaften, so dass es zu verwenden (wenn Bedingung) drei Mal oder direkt Kann Fehler für bekannte Eigenschaften löschen.

und nachdem sie verwenden

ModelState.IsValid