【问题标题】:Integrating a WebForm into an MVC application ASP.NET将 WebForm 集成到 MVC 应用程序 ASP.NET
【发布时间】:2013-04-30 15:29:17
【问题描述】:

我的问题分为两部分:

1

我的 MVC 项目的文件夹结构如下:

我想在“创建”页面中创建一个链接到“储蓄”WebForm

我已尝试将此添加到 RouteConfig:

routes.MapPageRoute(
            "idea-savings-calculator",
            "Idea/Savings",
            "~/Views/Idea/Savings.aspx"
            );

但是默认的 MVC MapRoute 功能:

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

首先映射到 URL localhost:xxxx/Idea/Savings 并引发错误,因为在 Idea 控制器 Savings 中没有名为 Savings 的操作。

编辑:RouteConfig 类:

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

                    routes.MapPageRoute(
            "idea-savings-calculator",
            "Idea/Savings",
            "~/Views/Idea/Savings.aspx"
            );

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

    }
}

2

以下是“创意”控制器 URL 的“创建”视图的剪辑:http://localhost:51946/Idea/Create

红色框表示我想要的储蓄链接WebForm

储蓄WebForm 只是一个简单的计算器;我如何将计算中的产品传递回上面的“创建”页面,以便它可以显示在底部的文本框中?我猜它会作为Idea Controller可以匹配的url中的参数?但是...如何?

谢谢!

【问题讨论】:

  • 您的 MapPageRoute 是否位于默认 MVC MapRoute 之前?它需要默认为贪婪。
  • 如果我把 MapPageRoute 放在第一位,如果我尝试访问 Idea Controller 下的任何页面,我会被重定向到 http://localhost:51946/Idea/Savings?action=Index&controller=Idea
  • 您是否查看过Route DebuggerGlimpse 以了解路由发生了什么?我成功地使用与您的路由非常相似的路由将友好的 url 路由到旧的 asp.net 网络表单。也许用你完整的 RegisterRoutes 方法更新你的帖子。
  • 忘了问了,你的路由开头有routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");吗?
  • 你好科林,感谢您的回复。我已经更新了帖子。

标签: asp.net-mvc asp.net-mvc-4 webforms


【解决方案1】:

因此,为了解决我的第一个问题,我将 WebForms 页面“Savings.aspx”移动到我的项目路径中,并在 MapRoute 方法之后使用了 MapPageRoute

routes.MapPageRoute(
"idea-savings-calculator",
"Idea/Savings",
"~/Savings.aspx"
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    相关资源
    最近更新 更多