3

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

我有一个普通/管理员用户的通用登录屏幕。所以基于usertype的json结果会返回用户类型。所以现在我想根据用户类型重定向用户。

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

但是在以下情况下该怎么办?如果用户是管理员,那么我想将他重定向到“Admin”区域中存在的“HomeController”的“Index”ActionResult。

4

3 回答 3

4

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

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

这将使您默认回到HomeController该区域的外部。

于 2015-08-11T14:24:13.967 回答
1

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

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

于 2015-08-11T15:15:20.593 回答
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 帮助程序扩展方法,以便您可以在其他地方重用逻辑。

于 2015-08-11T14:46:56.960 回答