ASP.NET MVC 路由 - 当操作名称和 Url 相同时重定向到路由
ASP.NET MVC Routing - Redirect to Route when Action Name and Url is same
我需要根据角色重定向到不同的操作。我对 RouteConfig.cs.
进行了以下更改
RouteConfig.cs
routes.MapRoute(
name: "borrower",
url: "borrower",
defaults: new { controller = "Home", action = "Borrower" });
routes.MapRoute(
name: "broker",
url: "broker",
defaults: new { controller = "Home", action = "Broker" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
这是我的控制器
HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
if (UserPrincipal.Current.Identity.IsAuthenticated)
{
if (UserPrincipal.Current.IsInRole("Broker"))
{
return RedirectToRoute("broker");
}
else if (UserPrincipal.Current.IsInRole("Borrower"))
{
return RedirectToRoute("borrower");
}
}
return View();
}
public ActionResult Broker()
{
return View();
}
public ActionResult Borrower()
{
return View();
}
}
代码流在 return RedirectToRoute("")
之前正常工作,但在此代码流之后永远不会进入 related/appropriate 操作并返回空视图。
注意: Broker 和 Borrower 视图都不是空的,它们有静态文本。
在网络选项卡中,您可以看到正在执行正确的重定向,浏览器中的 URL 被设置为路由 URL。
RedirectToRoute("Broker")
导致 302
响应,用户被重定向到 abc.com/broker
,但 abc.com/broker
没有命中 Broker
中的操作方法 HomeController
并返回空视图。根据 RouteConfig.cs
它应该点击 Broker
操作方法。
请指出我在这里做错了什么。
原来我在 Web 项目的根目录下有一个名为 "Borker" 和 "Borrower" 的目录。由于这个 MVC 路由模块被忽略,请求(abc.com/broker
和 abc.com/borrower
)被移动到这些目录。所以我重命名了这些目录,一切都按预期工作:)
我需要根据角色重定向到不同的操作。我对 RouteConfig.cs.
进行了以下更改RouteConfig.cs
routes.MapRoute(
name: "borrower",
url: "borrower",
defaults: new { controller = "Home", action = "Borrower" });
routes.MapRoute(
name: "broker",
url: "broker",
defaults: new { controller = "Home", action = "Broker" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
这是我的控制器
HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
if (UserPrincipal.Current.Identity.IsAuthenticated)
{
if (UserPrincipal.Current.IsInRole("Broker"))
{
return RedirectToRoute("broker");
}
else if (UserPrincipal.Current.IsInRole("Borrower"))
{
return RedirectToRoute("borrower");
}
}
return View();
}
public ActionResult Broker()
{
return View();
}
public ActionResult Borrower()
{
return View();
}
}
代码流在 return RedirectToRoute("")
之前正常工作,但在此代码流之后永远不会进入 related/appropriate 操作并返回空视图。
注意: Broker 和 Borrower 视图都不是空的,它们有静态文本。
在网络选项卡中,您可以看到正在执行正确的重定向,浏览器中的 URL 被设置为路由 URL。
RedirectToRoute("Broker")
导致 302
响应,用户被重定向到 abc.com/broker
,但 abc.com/broker
没有命中 Broker
中的操作方法 HomeController
并返回空视图。根据 RouteConfig.cs
它应该点击 Broker
操作方法。
请指出我在这里做错了什么。
原来我在 Web 项目的根目录下有一个名为 "Borker" 和 "Borrower" 的目录。由于这个 MVC 路由模块被忽略,请求(abc.com/broker
和 abc.com/borrower
)被移动到这些目录。所以我重命名了这些目录,一切都按预期工作:)