我需要你的帮助,我没有经验如何运作。
现在,我有以下网址:
http://website.com/controller1/action1
http://website.com/controller1/action2
问题,如何路由到http://website.com/controller1/action1
的其他网址而不影响http://website.com/controller1/action2
的网址
意思是:
访问http://website.com/controller1/action1
时,我想显示网址:http://website.com/shortcut
,但http://website.com/controller1/action2
显示为http://website.com/controller1/action2
。
有可能吗?
答案 0 :(得分:2)
您可以在文件routeCollection
中添加类似于Global.aspx
的路线添加到方法RegisterRoutes
routes.MapRoute(
name: "shortcut",
url: "shortcut",
defaults: new { controller = "controller1", action = "action1" }
);
答案 1 :(得分:0)
新的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