1
3
视图模型 模式更具体地针对您所描述的场景。你可以使用 视图数据 但这是不太推荐的解决方案,因为您失去了ASP.NET MVC框架的许多好处。例如,当您使用 视图数据 您的视图中没有类型安全、编译时检查和intellisense支持。 |
2
2
对于您的场景,我将在ViewData中传递另一个参数ViewData[“AllowEdit”],如果视图显示编辑链接,则该参数将设置为true。我更喜欢这样做,而不是将模型克隆到特定于视图的模型中来添加这个单一属性。我有时确实会创建视图特定的模型——例如,我有一个Grid ViewUserControl,它接受一个网格模型,我可以从任何其他模型类列表中生成该模型——但在这种情况下我不会这样做。 在我看来,我会这样做:
|
3
1
对于第一种情况,我可能会尝试在概要文件模型中封装这方面的逻辑,可能会使用一个类似CanEdit()的函数,该函数接受用户信息参数,并检查用户是否是概要文件的所有者,或者他们是否具有超级用户权限。然后在控制器中调用函数,并使用ViewData将结果传递给视图。
|
4
0
您可以为所有视图模型类创建一个基本模型类,并包含在许多视图中都有用的信息,即使不是在所有视图中都有用。
然后,在您看来,您可以进行基本比较:
这个简单的检查是很好的,它并没有太多的逻辑,无论如何,有人应该决定这个链接是否应该出现。当然,你可以创建两种不同的视图,有链接的和没有链接的,但是这太过分了。 |