MVC重定向基于Layout中的Controller操作

时间:2018-04-12 23:13:50

标签: c# asp.net-mvc c#-4.0 asp.net-mvc-5

您好我正在尝试添加一个控制器到我的布局,可以根据某些条件从页面重定向。想知道什么是最好的方法。我的布局是这样的

<body class="body">
@Html.Action("IsPageNeedsRedirection", "Authentication", new { area = string.Empty })
@Html.Partial("Header", Model)
@Html.Partial("Body", Model)
</body>

然后我的身份验证控制器如下所示:

 public class AuthenticationController : Controller
    {

        public ActionResult IsPageNeedsRedirection()
        {
            var urlToRedirect= '/login';
            var isAuthenticationRequired = // Get t/f based on current page to know if it requries authentication; 
            if (isAuthenticationRequired && !isLoggedIn){
            return Redirect(urlToRedirect);
            }
            else {return null;}
        }
    }

这不起作用,因为

  • 如果条件为真,则重定向失败并获得异常“不允许子操作执行重定向操作”(这是有道理的,因为视图已准备好呈现)
  • 如果条件为false,仍会抛出异常。

处理此类身份验证重定向的理想方法是什么?这只发生在一些页面和我,除非我知道什么页面,我不知道该页面是否需要身份验证。

0 个答案:

没有答案