2014-01-11 11 views
5

Ich lese ein Buch über ASP.NET MVC 4 und ich habe eine kleine Frage. Hier ist die Ansicht ModellSoll ich das View-Modellobjekt immer initialisieren?

public class SignupViewModel 
{ 
    public string Username { get; set; } 
    public string Password { get; set; } 
    public string Password2 { get; set; } 
    public string Email { get; set; } 
} 

das Autor des Buchs Objekt dieses Typs zu schaffen, schlägt vor, von der Steuerung eine Ansicht zu nennen.

public ActionResult Index() 
    { 
     if (!Security.IsAuthneticated) 
     { 
      return View("SignupPge", new SignupViewModel()); 
     } 

    } 

Die Ansicht selbst wird

stark typisierte
@model SignupViewModel 
    <p> 
     @using (var signupForm = Html.BeginForm("Signup", "Account")) 
     { 
      @Html.TextBoxFor(m => m.Email, new { placeholder = "Email" }) 
      @Html.TextBoxFor(m => m.Username, new { placeholder = "Username" }) 
      @Html.PasswordFor(m => m.Password, new { placeholder = "Password" }) 
      @Html.PasswordFor(m => m.Password2, new { placeholder = "Confirm Password" }) 

      <input type="submit" value="Create Account" /> 
     } 
    </p> 
} 

Ich frage mich war das wirklich nötig zu schaffen Aufgabe der View-Modell beim Aufruf der Ansicht? In der Tat habe ich versucht, Null als Modellobjekt übergeben und alles hat perfekt funktioniert. Ich denke, das MVC Framework hat das Modellobjekt selbst erstellt. Wenn das in Ordnung ist, wird es dann als eine gute Praxis angesehen?

+0

Was bringt es, dieses Objekt nicht zu erstellen? – Steven

+0

Nun, dann kann ich einfach View ("SignupPage") aufrufen und kümmere mich nicht um das Erstellen des Objekts. Ich bin mir nur nicht sicher, ob es eine gute Übung ist. –

Antwort

1

Von defensive coding Perspektiven, wenn Sie eine Funktion implementieren, die Parameter, Ihre Funktion übernimmt sollten nicht davon ausgehen, dass dieParameter gelten immer (null ist ein Beispiel für etwas ungültig).

Meiner Meinung nach folgt Asp.net mvc diesen Best Practices und versucht, eine Ausnahme zu vermeiden, wenn Sie null als Ansichtsmodell übergeben.

Ich frage mich nur, war das wirklich notwendig, um ein Objekt der Ansicht Modell beim Aufruf der Ansicht zu erstellen?

Ich denke, es ist notwendig, wenn Sie Ihre eigene Logik haben, das Objekt zu initialisieren, und Sie müssen das Objekt zu der Ansicht zu übergeben. Meiner Meinung nach sollten wir immer das Objekt übergeben, das wir brauchen, das ist klarer im Code und vermeidet es, sich auf die defensive Logik in der Methode zu verlassen. Die defensive Logik in der Methode besteht darin, die Methode vor ungültigen Parametern zu schützen und funktioniert manchmal nicht wie erwartet.

Verwandte Themen