首先,定义一个视图模型
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
视图等。
谢谢。这很有帮助。观看模型是前进的方向。拥有一个包含所有内容的单一视图模型或每个不同视图的许多特定视图模型会更好吗? – TheGwa 2011-03-17 09:01:57
@TheGwa - 不客气。您最终可能会拥有多个视图模型,因为对于EditUser视图而言,wat不太可能适合EditServices视图。经验法则:保持他们小,笨,简单。没有方法,功能或智能,只有一些帮助您进行显示过程的属性。 – 2011-03-17 09:13:29