我正在读一本有关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框架已经创建了模型对象本身。如果可以,那么是否认为这是一个好习惯?
从防御性编码的观点,当你实现一个接收参数的函数,你的函数不应该假设该参数总是有效(null
的东西无效的例子)。
在我看来,Asp.net mvc遵循这些最佳实践,并在您null
作为视图模型传递时尝试避免出现异常。
我只是想知道在调用视图时创建视图模型的对象真的必要吗?
我认为当您有自定义逻辑来初始化对象并且需要将该对象传递给视图时,这是必要的。在我看来,我们应该始终传递所需的对象,这在代码中更加清楚,并且避免依赖该方法中的防御性逻辑。方法中的防御逻辑是保护方法免受无效参数的侵害,有时无法按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句