2014-01-11 117 views
5

我正在讀一本關於ASP.NET MVC 4的書,我有一個小問題。 這裏是視圖模型我應該始終初始化視圖模型對象嗎?

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

該書的作者建議,以創建這種類型的對象調用來自控制器的視圖。

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

    } 

視圖本身是強類型

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

我想知道是調用視圖時視圖模型的這個真的有必要創建對象?事實上,我試圖通過null作爲模型對象,並且一切都很完美。我猜MVC框架已經創建了模型對象本身。 如果這是好的,那麼它被認爲是一種好的做法?

+0

不創建該對象的好處是什麼? – Steven

+0

那麼,我可以調用View(「SignupPage」),不要打擾自己創建對象。我只是不確定這是否是一種好的做法。 –

回答

1

defensive coding觀點,當你實現一個接收參數的函數,你的函數不應假設參數總是有效null是一些無效的例子)。

在我看來,Asp.net mvc遵循這些最佳實踐,並嘗試避免例外,當你通過null作爲視圖模型。

我只是在調用視圖時創建視圖 模型的對象真的有必要嗎?

我認爲這是必要的,當你有你的定製邏輯初始化對象,你需要該對象傳遞給視圖。在我看來,我們應該總是傳遞我們需要的對象,這在代碼中更加清晰,並且避免依賴方法中的防禦性邏輯。該方法中的防禦性邏輯是防止無效參數的方法,有時不會像預期的那樣工作。