如果用户不在给定角色中,则重定向到另一个操作

时间:2017-02-11 17:22:25

标签: c# asp.net-mvc routing

我的申请中有三个角色。我有一个索引页面,我想只能访问未注册的用户。因此,当注册用户尝试转到索引页面时,我的想法是将其重定向到他的索引页面。

我想这样做:

 public ActionResult Index()
        {
            if (User.IsInRole("CompanyAdministrator"))
            {
                return RedirectToAction("Index", "CompaniesController");

            }
            else if (User.IsInRole("Employee"))
            {
                return RedirectToAction("Index", "EmployeeController");
            }
            return View();

因此,当我以公司管理员身份登录并尝试转到Home / Index时,重定向的内容我得到了

  应用程序中的服务器错误。

     

无法找到资源。

,网址如下:http://localhost:49858/CompaniesController

很抱歉,如果这个问题过于主观,但我找不到这个问题的解释,我也不能自己解释。

有关此的任何提示吗?

2 个答案:

答案 0 :(得分:2)

您不需要Controller后缀。只需使用不带Controller部分的控制器名称。

这应该有用。

return RedirectToAction("Index", "Companies");

MVC框架使用Controller后缀来检测应用程序启动时的所有控制器(注册路由)。除此之外,最终用户(编码的人)通常不需要在任何地方使用完整的班级名称!

显然,名字(C#6)cannot be used to get the Controller class name

答案 1 :(得分:1)

您不需要添加' Controller'在控制器名称中。它应该是

(define test2
  (let ((x (begin (display "Hello from test2") 20)))
    (lambda () x)))

=> Hello from test2
(test2)
=> 20
(test2)
=> 20
(test2)
=> 20