gpt4 book ai didi

asp.net - 使用 Webforms 和 MVC 路由到项目上的 aspx 页面

转载 作者:行者123 更新时间:2023-12-01 19:55:09 25 4
gpt4 key购买 nike

我已经将 MVC 添加到了我一直在开发的现有 Webforms 项目中,因为我希望慢慢迁移该项目,但是,在变更期间我需要能够访问这两个项目,但是拥有它默认为 aspx 页面。

当谈到注册路由时,我目前已经这样做了:

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

routes.MapPageRoute("Backup", "{*anything}", "~/Default.aspx");

routes.MapRoute(
"MVC",
"{controller}/{action}/{id}",
new { controller = "Test", action = "Index", id = 1 }
);
}

但是,当我像这样设置时,即使我输入了一个我知道引用 Controller /操作组合的 URL(例如,最后一行的测试和索引),它仍然会将用户重定向到默认.aspx 页面。

我尝试将其更改为以下内容:

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

routes.MapRoute(
"MVC",
"{controller}/{action}/{id}",
new { controller = "Test", action = "Index", id = 1 }
);

routes.MapPageRoute("Backup", "{*anything}", "~/Default.aspx");
}

在这里,用户可以指定一个页面或指定一个 Controller /操作,但如果它们不包含任何 Controller /aspx页面,则默认为默认MVC路由,而我需要它默认为Webform Default.aspx .

如何解决这种情况,以便如果未指定页面/ Controller ,它会定向到 ~/Default.aspx,如果指定了 Controller ,它会定向到该 Controller ?

最佳答案

我尝试尝试您的场景,其中我有一个现有的 Web 表单应用程序,并向其中添加了 MVC。基本上我遇到了两种解决方案。

第一:您可以忽略添加 routes.MapPageRoute 到路由配置;这就是我所做的

public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.EnableFriendlyUrls();

routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

请注意,我已在默认值中排除了 Controller 的值。现在,即使存在匹配,并且如果不存在该名称的 Controller ,则请求将回退到常规 ASP.Net 管道来查找 aspx 页面。通过这种方法,您可以请求诸如 http://localhost:62871/http://localhost:62871/Home/Indexhttp://本地主机:62871/Home/http://localhost:62871/About.aspx

第二种::在此方法中,您可以在 Areas 文件夹下为基于 MVC 的新工作创建一个区域,并保留 App_Start 中的 RouteConfig 更改为默认值,如下所示。

public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.EnableFriendlyUrls();
}
}

然后在您的区域注册类中定义路线,如下例所示。

public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}

希望有帮助。谢谢。

关于asp.net - 使用 Webforms 和 MVC 路由到项目上的 aspx 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23762343/

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