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

时间:2015-01-19 14:44:22

标签: c# asp.net-mvc

在我的应用程序中存在一个小角色系统。 "联系" "正常"用户。在我的应用程序中,我在表中显示数据。管理员必须能够创建,编辑和删除这些数据,但"正常"用户不得。

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

控制器:

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. 会很好

    谢谢你,以及最好的问候

2 个答案:

答案 0 :(得分:1)

这样做的一种方法可能是

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 :(得分:1)

1。 最确定这不是一个好习惯。

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

如果你只是加载一个不同的视图,访客用户仍然可以在网址栏中引入类似“/ admin / deleteSmth / 1”的内容,并执行管理操作。

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

  1. 您应该将逻辑远离视图。视图仅用于渲染数据。这应该是全部。如果您有业务逻辑层,则所有逻辑都应高于控制器。

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