gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 2.0 简单路由问题

转载 作者:行者123 更新时间:2023-12-02 06:24:26 26 4
gpt4 key购买 nike

我正在将我们的网站从一个蹩脚的 CMS 转移到一个漂亮的自定义编码 MVC 网站。到目前为止一切顺利,但我在路由方面遇到了一些问题。

我们公司发送了大量营销电子邮件和信件。在这些页面中,我们让用户转到登陆页面,这样我们就可以跟踪事件的进展情况,并提供更多信息。所以在一封信中它会说“访问 www.OurSite.com/LandingPage”。但是,在 MVC 中,默认情况下所有页面都放在其 Controller 的文件夹中。

假设我的 Home Controller 中有一个名为 LP 的页面,那么 url 是 www.OurSite.com/Home/LP

我需要的是让它像以前一样变成 www.OurSite.com/LP,这样一旦我们推出新网站,我们目前正在开展的营销事件就不会出现 404。此外,输入起来更方便,所以我们不想在未来继续使用它。

基于这个默认路由:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}

我试过创建这样的东西:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

routes.MapRoute(
"LandingPage",
"{action}/{id}",
new { controller = "Home", action = "LandingPage", id = UrlParameter.Optional }
);
}

但这并没有解决我的问题。

我已经进行了一些谷歌搜索,所有这些都是针对并不真正适用的非常复杂的路由。我对制作这种超动态或任何东西并不感兴趣。每次我们开展事件时,我都可以轻松制定新路线。

我还应该注意,并不是所有这些页面都在 Home Controller 中。因此,仅删除一条路线是行不通的。我们的着陆页属于许多 Controller 。

最佳答案

我在 http://pastie.org/1054360 中编辑了您的代码.您必须将新路线放在默认路线之前。路由时,无论哪条路由最匹配,都会调用与 URL 匹配的第一个路由。在你的例子中 http://domain.com/CPA2010首先匹配默认路由,因为没有指定限制。它寻找 CPA2010 Controller 的索引操作。在此处尝试代码,它应该可以工作。

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"CPA2010Route", // Route name
"CPA2010", // URL with parameters
new { controller = "Home", action = "CPA2010" } // Parameter defaults
);

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterRoutes(RouteTable.Routes);
}
}

关于asp.net-mvc - ASP.NET MVC 2.0 简单路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com