Asp.net mvc 将自定义ViewModel对象传递给ActionMethod与作为FormCollection传递
显然,现实生活中的应用程序要复杂得多,但为了这个示例,让我们假设我有以下简单视图,我需要保存用户:Asp.net mvc 将自定义ViewModel对象传递给ActionMethod与作为FormCollection传递,asp.net-mvc,model-view-controller,formcollection,Asp.net Mvc,Model View Controller,Formcollection,显然,现实生活中的应用程序要复杂得多,但为了这个示例,让我们假设我有以下简单视图,我需要保存用户: @model UserViewModel @Html.TextBoxFor(model=>model.FirstName) </br> @Html.TextBoxFor(model=>model.MiddleName) </br> @Html.TextBoxFor(model=>model.LastName) 及 问题:是否有理由使用一种方法而不是另
@model UserViewModel
@Html.TextBoxFor(model=>model.FirstName)
</br>
@Html.TextBoxFor(model=>model.MiddleName)
</br>
@Html.TextBoxFor(model=>model.LastName)
及
问题:是否有理由使用一种方法而不是另一种方法?还有一些开发人员告诉我,第二种方法是首选的。像第一个例子中所示的那样传递整个对象不是一个好主意。为什么?简短回答:两者都有效 长期固执己见的回答:我更喜欢第一个
public ActionResult(UserViewModel用户)
{
var myUser=Mapper.Map(用户);
}
希望这能有所帮助。我无法想象为什么有人会接受
FormCollection
,但也许有些人会从一遍又一遍地编写自己的解析和验证代码中获得不正当的乐趣…验证。。好的方面还有一些开发人员告诉我第二种方法是首选的。像第一个示例中所示的那样传递整个对象不是一个好主意。
。真正地他们开发什么?我们谈论的是软件开发人员吗?还是在这个领域首次亮相的人?我相信他们为你提供了坚实的论据,说明为什么第二个更受欢迎。你们可以从我这里给他们送一杯啤酒。我现在可以自己去喝一杯。谢谢你们。
1)
public ActionResult(UserViewModel user)
{
var myUser = new User();
myUser = user.FirstName;
myUser = user.MiddleName;
myUser = user.LastName;
}
2)
public ActionResult(FormCollection collection)
{
var myUser = new User();
myUser = collection.Get("FirstName");
myUser = collection.Get("MiddleName");
myUser = collection.Get("LastName");
}
public ActionResult(UserViewModel user)
{
var myUser = Mapper.Map<User, UserViewModel>(user);
}