[英]ASP.NET MVC5: RedirectToAction
我希望如果用户无权访问特定页面,则会重定向到此页面“ErrorAccessPage.cshtml” 。 此页面没有任何控制器。 它位于文件夹名称Shared中 。
这是逻辑:
if (user has access){
return View();
}
else
{
return RedirectToAction("//how to input the page here?");
}
更新:
我将代码更改为:
if (moduleViewModel.CanRead == true){
return View();
}
else
{
return RedirectToAction("~/Shared/ErrorAccessPage.cshtml");
}
没有控制器,您不能RedirectToAction
,因为Action必须存在于控制器上。 也就是说,您可以重定向到“普通”html文件:
Redirect("~/Shared/ErrorAccessPage.html");
或者您可以直接从当前控制器操作返回视图,而无需重定向:
return View("~/Shared/ErrorAccessPage.cshtml");
至于您更新的错误消息,因为您尝试访问Views文件夹之外的视图,MVC禁止提供该文件。 您有两种选择:
移动视图文件夹内的视图:
return View("~/Views/Shared/ErrorAccessPage.cshtml");
通过添加以下内容,允许MVC从Views文件夹外部提供视图:
<add key="webpages:Enabled" value="true" />
到你的web.config
出于安全性和一致性原因,建议使用前者。
您可以使用方法View("ErrorAccessPage")
来显示您的页面。
RedirectToAction()
将搜索控制器操作而不是视图。 如果找到控制器操作,它会将执行控制传递给匹配的控制器操作。
如果您只想显示视图,可以使用View("view_name")
。 因为它将在您的解决方案中的View-> Your_Current_Controller_Name和View-> Shared目录下搜索html,aspx或cshtml文件并显示它。
if (user has access){
return View();
}
else
{
return View("ErrorAccessPage");
}
那么,你的最终代码将是,
希望这会帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.