如何使用@ Url.Action从AREA的cshtml页面重定向到普通控制器的ActionResult?

时间:2015-08-11 14:20:17

标签: asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-areas url.action

如何从我所在区域视图的.cshtml页面重定向到普通控制器的ActionResult?

我有一个普通/管理员用户的常用登录界面。 所以基于usertype的json结果将返回用户类型。 所以现在我想基于usertype重定向用户。

如果用户是普通用户,那么我可以使用重定向他 "var redirectUrl = '@Url.Action("Index", "Home")';"然后"window.location.href = redirectUrl;" 上面的代码工作正常。

但是在下列情况下该怎么办? 如果用户是管理员,那么我想将他重定向到"索引" ActionResult" HomeController"它存在于" Admin"区域。

3 个答案:

答案 0 :(得分:2)

要在区域外重定向,请使用区域的空白字符串:

@Url.Action("Index", "Home", new { area = "" })

这将默认您返回该区域外的HomeController

答案 1 :(得分:1)

如果我理解正确,你的链接上只需要一些条件逻辑。

@{
    var redirectUrl = Url.Action("Index", "Home", new { area = "" })

    if (this.User.IsInRole("Administrator"))
    {
        redirectUrl = Url.Action("Index", "Home", new { area = "Admin" })
    }
}

<script>
    var redirectUrl = '@redirectUrl';
    window.location.href = redirectUrl;
</script>

虽然,更好的选择可能是制作自己的HTML helper extension method,以便您可以在其他地方重复使用逻辑。

答案 2 :(得分:1)

最后,下面的语法对我有用。

var adminHomePageUrl = '@Url.Action("Index","Home", new { area = "Admin" })';