C# 我应该总是初始化视图模型对象吗?
我正在读一本关于ASP.NETMVC4的书,我有一个小问题。 这是视图模型C# 我应该总是初始化视图模型对象吗?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在读一本关于ASP.NETMVC4的书,我有一个小问题。 这是视图模型 public class SignupViewModel { public string Username { get; set; } public string Password { get; set; } public string Password2 { get; set; } public string Email { get; set; } } 本书作者建议创建这种类型的对象,
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>
}
@model SignupViewModel
@使用(var signupForm=Html.BeginForm(“注册”、“帐户”))
{
@Html.TextBoxFor(m=>m.Email,新的{placeholder=“Email”})
@Html.TextBoxFor(m=>m.Username,新的{placeholder=“Username”})
@Html.PasswordFor(m=>m.Password,新的{placeholder=“Password”})
@Html.PasswordFor(m=>m.Password2,新的{placeholder=“Confirm Password”})
}
}
我只是想知道,在调用视图时,创建视图模型的对象真的需要这样做吗?
事实上,我尝试将null作为模型对象传递,并且一切都很好地工作。我猜MVC框架已经创建了模型对象本身。
如果这是可以的,那么它被认为是一种好的做法吗?从不同的角度来看,当您实现一个接受参数的函数时,您的函数不应该假定参数总是有效的(null
是一个无效的例子)
在我看来,Asp.net mvc遵循这些最佳实践,并试图在将null
作为视图模型传递时避免异常
我只是想知道,创建视图对象真的需要这样做吗
调用视图时使用模型
我认为有必要使用自定义逻辑来初始化对象,并且需要将该对象传递给视图。在我看来,我们应该始终传递我们需要的对象,这在代码中更清晰,并且避免依赖方法中的防御逻辑。该方法中的防御逻辑是保护该方法不受无效参数的影响,有时无法按预期工作。不创建该对象有什么好处?那么,我可以调用View(“SignupPage”),而不用为创建该对象而烦恼。我只是不确定这是否是一个好的做法。