基于应用程序角色的控制器的多个视图

Multiple views for controller based on role in application

在我的应用程序中存在一个小角色系统。 "Admin" 和 "normal" 用户。在我的应用程序中,我在表格中显示数据。管理员必须可以创建、编辑和删除这些数据,但 "normal" 用户不能。

所以我认为根据用户显示不同的视图是个好主意。但我目前正在努力实施。

控制器:

public ActionResult Index()
{

if(model.IsAdmin)
{
    ... // get data
}
else
{
    ... // get data, but less, or different
}

    return (model.IsAdmin) ? this.View("AdminView") : this.View("NormalView");

}

它可能看起来像这样。

  1. 在一个控制器上创建单独的视图是个好主意吗?
  2. 我是否应该改用部分视图并在我的视图中执行逻辑来决定要显示哪个视图?好像不太对。
  3. 文件夹结构和文件命名怎么样?如果它们都匹配 MyController/Action/Index,而不是 .../Index 和 .../Index2
  4. 就好了

谢谢你和最诚挚的问候

一种方法可以是

public ActionResult Index()
{

if(model.IsAdmin)
{
    ... // get data
return view("AdminView")
}
else
{
    ... // get data, but less, or different
return view("NormalView")
}
//no need to perform extra checks
}

1。 可以肯定这不是一个好的做法。

您应该尝试为每个角色创建不同的控制器。或者您可以使用区域指向管理员。

如果您只是加载不同的视图,来宾用户仍然可以在 url 栏中引入类似“/admin/deleteSmth/1”的内容,并执行管理操作。

如果您实施不同的控制器或区域,那将是最好的。

  1. 你应该让逻辑远离视图。视图仅用于呈现数据。应该就是这些了。如果你有业务逻辑层,所有的逻辑都应该高于控制器。

  2. http://www.codeproject.com/Tips/601504/Using-areas-in-ASP-NET-MVC-to-organize-a-project。区域,使用它们。