如何在 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相同。

有可能吗?

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

您可以在文件中添加要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