0

我有两个屏幕,一个标准用户屏幕和一个管理员屏幕。两者之间的变化相当小——管理屏幕上有一些额外的按钮和选项。

就 MVC 最佳实践而言,最好:

  1. 对管理员和标准用户屏幕使用相同的视图和相同的视图模型。这样就没有代码重复,但我将在视图和控制器中有几个 if...else 语句

  2. 为管理员和用户屏幕使用单独的视图和视图模型。这会导致一些代码重复,但如果屏幕最终的分歧比现在更大,那么最终是最灵活的。

  3. 其他一些很好的解决方案?

4

2 回答 2

3

我会使用单独的视图模型并将继承应用到您的ViewModel. 所以您不会复制代码。

public class CustomerCreateViewModel
{
  //Here i i have properties common to both user and admin
  public string FirstName { set;get;}
  public string LastName { set;get;}
}
public class AdminCustomerCreateViewModel : CustomerCreateViewModel
{
  //This property is only for admin
  public string ReasonForFiring { set;get;}
}

我个人更喜欢保留单独的视图,因为它使事情变得干净且更具可读性/可维护性。现在你有 2 个单独的 ViewModel,所以有单独的视图。您可以根据需要考虑渲染局部视图(在两个视图中)

于 2012-07-27T16:52:25.817 回答
0

这真的只是一个你可以回答的问题。您基本上说过,如果更改很小,那么我们使用单个视图并将管理功能包装在检查用户角色的 if 语句中。

但是,只有在管理员版本和非管理员版本之间没有模型更改时,我才会这样做。添加其他模型项后,我建议使用单独的模型和视图。

于 2012-07-27T17:05:41.857 回答