我是MVC的新手,没有找到将类型模型返回到视图的正确方法的示例。我需要创建一个视图,以允许经过身份验证的用户编辑他们的一些配置文件。MVC - 为编辑配置文件从控制器返回模型
作为测试,我创建了一个控制器操作,返回一个ApplicationUser模型和查看页面,该页面在表单字段中显示该配置文件。这有效,但它包含所有的用户配置文件,这不是我想要的。为了测试我写了下面:
Public ActionResult EditProfile()
{
ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());
return View(user)
}
当然,这样做的工作,我知道我可以显示任何我的看法一样,虽然我不知道,如果是将返回所有的最佳实践用户的个人资料到视图时,我只需要允许编辑他们的一些设置。
因此,我创建了一个新的ViewModel,只有需要的字段和基于该模型的新视图。它的工作原理,但我仍然觉得我做得不好。在控制器操作中,我这样做了:
public ActionResult EditProfile()
{
ApplicationUser user = UserManager.FindById(User.Identity.GetUserId());
EditProfileViewModel model = new EditProfileViewModel();
model.Email = user.Email;
model.Company = user.Company;
model.Name = user.Name;
model.PhoneNumber = user.PhoneNumber;
model.CountryCode = user.CountryCode;
model.StateProvince = user.StateProvince;
model.Language = user.Language;
model.StateProvinceCode = user.StateProvinceCode;
return View(model);
}
这似乎没有必要和可怕的维护。我很抱歉提出这样一个基本问题。我诚实地搜索了'网络的例子,我知道他们在那里,但我没有找到我觉得适用于我的问题。
顺便说一句,控制器装饰着[授权],所以我认为这个动作/视图只能由经过验证的用户访问。
如果有人能够向我展示填充模型并将其传递给控制器的正确方法示例,我将更好地理解。似乎这应该能够在几行代码中完成。
将视图模型中的构造函数放入接收域模型。更容易维护。新的EditProfileViewModel(用户); – gnome