如何在 MVC c# 中更改 URL?
How to change URL in MVC c#?
家庭控制器中的代码如下:
public ActionResult Index()
{
return View();
}
public ActionResult AboutUs()
{
return View();
}
以下是我的RouteConfig.cs
中的代码
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"AboutUsPage",
"about",
new { Controller = "Home", action = "AboutUs", });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
现在,如果我点击地址 "localhost:9731/Home/AboutUs",那么它将点击我在家庭控制器中的关于我们的操作。类似地,如果我点击地址 "localhost:9731/about",那么它会在 Home Controller 中点击我的 AboutUs 操作,因为 URL 在 RouteConfig.cs 中重写。
问题是当用户在地址栏中点击 "localhost:9731/Home/AboutUs" 时如何显示 "localhost:9731/about"??。请帮我。谢谢
实现此目的的一种方法是使 301 永久重定向到新路由。所以你可以有一个重定向控制器:
public class RedirectController : Controller
{
public ActionResult Index(string redirectToAction, string redirectToController)
{
return this.RedirectToActionPermanent(redirectToAction, redirectToController);
}
}
然后配置您的旧路由以重定向到新路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"AboutUsPage",
"about",
new { controller = "Home", action = "AboutUs", });
routes.MapRoute(
name: "AboutUsLegacy",
url: "Home/AboutUs",
defaults: new {
controller = "Redirect",
action = "Index",
redirectToAction = "AboutUs",
redirectToController = "Home" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
在此示例中,我们在默认路由之前添加了一个新路由,它将侦听您要重定向的旧路由 (/Home/AboutUs
),然后它会将 301 重定向发送到 /about
家庭控制器中的代码如下:
public ActionResult Index()
{
return View();
}
public ActionResult AboutUs()
{
return View();
}
以下是我的RouteConfig.cs
中的代码 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"AboutUsPage",
"about",
new { Controller = "Home", action = "AboutUs", });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
现在,如果我点击地址 "localhost:9731/Home/AboutUs",那么它将点击我在家庭控制器中的关于我们的操作。类似地,如果我点击地址 "localhost:9731/about",那么它会在 Home Controller 中点击我的 AboutUs 操作,因为 URL 在 RouteConfig.cs 中重写。
问题是当用户在地址栏中点击 "localhost:9731/Home/AboutUs" 时如何显示 "localhost:9731/about"??。请帮我。谢谢
实现此目的的一种方法是使 301 永久重定向到新路由。所以你可以有一个重定向控制器:
public class RedirectController : Controller
{
public ActionResult Index(string redirectToAction, string redirectToController)
{
return this.RedirectToActionPermanent(redirectToAction, redirectToController);
}
}
然后配置您的旧路由以重定向到新路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"AboutUsPage",
"about",
new { controller = "Home", action = "AboutUs", });
routes.MapRoute(
name: "AboutUsLegacy",
url: "Home/AboutUs",
defaults: new {
controller = "Redirect",
action = "Index",
redirectToAction = "AboutUs",
redirectToController = "Home" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
在此示例中,我们在默认路由之前添加了一个新路由,它将侦听您要重定向的旧路由 (/Home/AboutUs
),然后它会将 301 重定向发送到 /about