C# 如何在void函数中实现重定向操作

C# 如何在void函数中实现重定向操作,c#,asp.net-mvc,redirect,authorize,C#,Asp.net Mvc,Redirect,Authorize,在我的代码中,我正在调用一个函数,该函数对数据库进行一些验证检查,如果失败,它应该将用户发送到“拒绝访问”页面。。。但似乎不起作用 以前,重定向将使用Server.Transfer或Response.redirect,但不确定如何使用MVC实现正确的效果 简而言之,我的代码是这样的,任何帮助都将不胜感激 private void CheckSecruity() { // secruity checks here if (failCheck) RedirectToA

在我的代码中,我正在调用一个函数,该函数对数据库进行一些验证检查,如果失败,它应该将用户发送到“拒绝访问”页面。。。但似乎不起作用

以前,重定向将使用Server.Transfer或Response.redirect,但不确定如何使用MVC实现正确的效果

简而言之,我的代码是这样的,任何帮助都将不胜感激

private void CheckSecruity()
{
    // secruity checks here
    if (failCheck)
        RedirectToAction("NoAccess", "MyController");

    // if code gets here, security was passed
}

public ActionResult MyPage()
{
     // Call Security Function
     CheckSecruity();

     /*
       Do normal code
     */

     // Display page
     return View();
}

当运行代码时,代码会进入CheckSecurity()函数,但不管其中的代码是什么,它总是显示MyPage

您的
重定向到操作
返回一个
重定向到路由结果
,因此您应该执行以下操作:

 public ActionResult MyPage()
 {
      // security
      if (failCheck)
         return RedirectToAction("NoAccess", "MyController");

      /*
        Do normal code
      */

      // Display page
      return View();
 }

您的
RedirectToAction
返回一个
RedirectToRouteResult
,因此您应该执行以下操作:

 public ActionResult MyPage()
 {
      // security
      if (failCheck)
         return RedirectToAction("NoAccess", "MyController");

      /*
        Do normal code
      */

      // Display page
      return View();
 }

非常感谢Stijn的指导;已经调查过了,这是完美的!我想我会分享我所做的事情的结果,因为它与使用MVC角色略有不同

[MyNewSecurity]
public ActionResult MyPage()
{
    return View();
}
我在该文件夹中添加了过滤器文件夹和一个新的(SecurityAttribute.cs)类,其中包含以下代码(抱歉,我必须删掉一些代码)


我毫不怀疑代码可以改进,这是我将继续努力的方向,但这肯定是一个开端。

非常感谢Stijn的这一方向;已经调查过了,这是完美的!我想我会分享我所做的事情的结果,因为它与使用MVC角色略有不同

[MyNewSecurity]
public ActionResult MyPage()
{
    return View();
}
我在该文件夹中添加了过滤器文件夹和一个新的(SecurityAttribute.cs)类,其中包含以下代码(抱歉,我必须删掉一些代码)


我毫不怀疑代码可以改进,这是我将继续努力的方向,但这肯定是一个开端。

您可能需要研究,如果需要,还需要研究如何自定义属性实现。您可能需要研究,如果需要,如何实现该属性的自定义实现。我有点期待这个答案,但是(如果可能的话)我希望将实际重定向保留在单独的函数中。根据用户的类别(员工|客户|普通公众|技术),我们希望以不同的方式进行指导,理想情况下,我们不希望失败后出现4+选项的切换。我有一半希望得到这个答案,但(如果可能的话)我希望将实际重定向保留在单独的函数中。根据用户类别(员工|客户|一般公众|技术),我们希望以不同的方式进行指导,理想情况下,我们不希望失败的用户有4+选项的切换。