如何在 C# ASP.NET MVC3 中映射特定操作的路由
本文关键字:映射 操作 路由 MVC3 ASP NET | 更新日期: 2023-09-27 18:30:45
我需要你的帮助,我没有路线如何运作的经验。
现在,我有以下网址:
http://website.com/controller1/action1
http://website.com/controller1/action2
问题,如何在不影响要http://website.com/controller1/action2
的 url 的情况下路由到另一个 url 进行http://website.com/controller1/action1
方法:
当访问http://website.com/controller1/action1
时,我想显示url:http://website.com/shortcut
,但对于http://website.com/controller1/action2
显示与http://website.com/controller1/action2
相同。
有可能吗?
您可以在文件中添加要routeCollection
的路由Global.aspx
添加到方法RegisterRoutes
routes.MapRoute(
name: "shortcut",
url: "shortcut",
defaults: new { controller = "controller1", action = "action1" }
);
新 ASP.NET MVC 3 应用程序中的默认路由将处理您的前两个请求,但您可能会对命名约定感到困惑。例如,如果其中有一个名为 HomeController
的控制器类和一个名为 action1
的操作,则该路由的默认处理将为 /Home/action1
。
要处理/controller1/action1
和/controller1/action2
,您需要从字面上命名您的控制器类controller1Controller
并添加两个操作,例如
public class controller1Controller : Controller
{
public ActionResult action1()
{
return View();
}
public ActionResult action2()
{
return View();
}
}
要处理您的/shortcut
路由,您可以使用 Satpal 建议的内容,只要它在默认路由之上定义即可。路线越具体,它就越需要出现在路由定义中,例如
routes.MapRoute(
name: "nameOfShortcutRoute",
url: "shortcut",
defaults: new { controller = "controller1", action = "action1" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
查看此链接以获取良好的路由教程 http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs