ASP.NET MVC5:RedirectToAction

kwi*_*gko 4 c# asp.net-mvc-5

我希望如果用户无权访问特定页面,则会重定向到此页面"ErrorAccessPage.cshtml".此页面没有任何控制器.它位于文件夹名称Shared中.

这是逻辑:

if (user has access){
    return View();
}
else
{
    return RedirectToAction("//how to input the page here?");
}
Run Code Online (Sandbox Code Playgroud)

更新:

我将代码更改为:

if (moduleViewModel.CanRead == true){
    return View();
}
else
{
    return RedirectToAction("~/Shared/ErrorAccessPage.cshtml");
} 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Dav*_*d L 5

你不能RedirectToAction没有控制器,因为Action必须存在于控制器上.也就是说,您可以重定向到"普通"html文件:

Redirect("~/Shared/ErrorAccessPage.html");
Run Code Online (Sandbox Code Playgroud)

或者您可以直接从当前控制器操作返回视图,而无需重定向:

return View("~/Shared/ErrorAccessPage.cshtml");
Run Code Online (Sandbox Code Playgroud)

至于您更新的错误消息,因为您尝试访问Views文件夹之外的视图,MVC禁止提供该文件.您有两种选择:

移动视图文件夹内的视图:

return View("~/Views/Shared/ErrorAccessPage.cshtml");
Run Code Online (Sandbox Code Playgroud)

通过添加以下内容,允许MVC从Views文件夹外部提供视图:

<add key="webpages:Enabled" value="true" />
Run Code Online (Sandbox Code Playgroud)

到你的web.config

出于安全性和一致性原因,建议使用前者.