首先,定义一个ViewModel
public class EditUserViewModel
{
public User User { get; set; }
public IList<License> Licenses { get; set; }
public IList<Service> Services { get; set; }
}
视图模型只是一个帮助类,它包含显示视图所需的一切。然后,在您的操作中:
public ActionResult EditUser(int id)
{
var userViewModel = new EditUserViewModel
{
User = // Get user from db
Licenses = // Get licenses for that user
Services = // Getservies the user in entitled to
}
return View(userViewModel);
}
然后,使用 EditUserViewModel 使您的视图成为模型的类型化视图:
@model EditUserViewModel
@* //Some html or whatever here *@
@* //Access your model properties as follows *@
@Model.User
@Model.Licenses
@Model.Service
您可以将 EditUserViewModel 类重用于其他视图,例如 UserDetails。在这种情况下,您可能想要重命名并去掉“编辑”前缀。
更新以澄清评论中
的问题:经验法则:保持您的视图模型小,愚蠢和简单。没有方法、功能或智能,只有几个属性可以帮助您进行显示过程。您只想在非常相似的视图上重用视图模型,就像EditUser
和DisplayUser
视图一样。你会有一个不同的视图模型DisplayServices
,等等。