我有以下控制器
public class GlobalAdminController : Controller
{
// GET: GlobalAdmin
[AuthorizeUser(Roles = "admin")]
public ActionResult Index()
{
return View();
}
}
家庭控制器是应用程序的主要登录页面
public ActionResult Index()
{
if(User.IsInRole("admin"))
{
RedirectToAction("Index", "GlobalAdmin");
}
return View();
}
重定向到操作在调试器中执行 但是,索引操作本身并未在全局管理员上执行
我想知道是否有更好的方法来做到这一点?也许是通过路由?
答案 0 :(得分:2)
您必须使用return
向浏览器提供重定向信息(url
)。浏览器将重定向到新位置。
public ActionResult Index()
{
if(User.IsInRole("admin"))
{
return RedirectToAction("Index", "GlobalAdmin");
}
return View();
}
路由的目的是提供一种从控制器访问操作的方法。您无需访问GlobalAdmin/Index
,而是使用该路线提供其他方式,例如admin/index
routes.MapRoute(
name: "Default",
url: "admin/{action}/{id}",
defaults: new { controller = "GlobalAdmin", action = "Index", id = UrlParameter.Optional } );
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );