如何在C#ASP.NET MVC3中映射特定操作的路由?

时间:2013-09-10 12:32:13

标签: c# asp.net-mvc-3

我需要你的帮助,我没有经验如何运作。

现在,我有以下网址:

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

有可能吗?

2 个答案:

答案 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