【问题标题】:Add ASP.NET MVC Area to ASP.NET Web Forms existing project将 ASP.NET MVC 区域添加到 ASP.NET Web 窗体现有项目
【发布时间】:2015-05-12 17:35:22
【问题描述】:

我有一个使用 .NET FrameWork 4.5.1 在 ASP.NET Web 窗体中开发的网站

我们需要为移动设备构建站点的副本(在这种情况下,响应式对我们不起作用),所以我最终考虑使用 ASP.NET MVC 来处理站点的这一部分。

继续前请注意: 我知道有一些关于这个主题的问题得到了解答,并且在网络上有一些关于如何混合它们的文章。但它们都不适合我,因为我正在尝试使用 One ASP.NET Framework 来避免进行大量手动工作。

所以,我所做的是:

  1. 在我的 ASP.NET WebForms 项目中添加用于 MVC 的 Nuget 包
  2. 添加后,我配置了一个 MVC 区域以在 MVC 中包含我的移动网站

项目结构如下:

我的问题来了:如果我运行任何 ASPX 页面,它们都可以正常运行。当我转到 /Mobile/Home/Index 时,它说找不到资源。我怀疑这是因为我的项目中不存在 App_Start 文件夹,并且 Starup.cs 也不存在,因此该网站对 MVC 路由一无所知。

问题

  1. 如何使用默认值添加 App_Start 文件夹和 Starup.cs 而不会影响该过程(避免复制/粘贴或手动过程)?

  2. 我怎样才能让这两个(Web 类型的项目)像他们所说的那样可以通过 One ASP.NET Framework 完成?。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    您需要在 Global.asax 中注册这些区域(如果不存在,请通过“添加项目”菜单选项添加):

    public class Global : HttpApplication
    {
    
        protected void Application_Start(object sender, EventArgs e)
        {
            AreaRegistration.RegisterAllAreas();
    
        }
    
    }
    

    这将启用指向您的手机@localhost/{ProjectName}/Mobile/Home的链接

    【讨论】:

    • 那么,不需要创建 Starup.cs 吗?如果我需要 BundleConfig.cs,我也必须自己创建它?
    • 是的,您需要为要在子项目中使用的 MVC 的每个功能方面创建一个静态配置文件。
    • @FelipeCorrea 我刚刚用一个空的 asp 项目进行了测试,你所需要的只是 Global.asax 中的区域注册,如果它不存在,你可以添加到主项目中.
    • 工作就像一个魅力!谢谢!我想只有在需要它们指定更多路由或捆绑包时才需要其他文件。惊人的! :D
    【解决方案2】:

    如果我要在同一个项目中混合使用这两者,我会从 MVC 项目开始,并将 ASP.Net 页面放在它们自己的子文件夹中。

    但也许您应该考虑拥有 2 个独立的项目,每个“应用程序”一个。

    所以现在可以将一个单独的应用程序部署到 MainApplicationFolder\SomeSubfolder。

    当然,您可能还想为您的链接考虑以下内容:

    @VirtualPathUtility.ToAbsolute("~/SomeController/SomeAction")
    

    【讨论】:

    • 我明白你的意思,尽管我认为利用框架的功能是件好事。如果您可以将它们一起使用,并且它适用于您要解决的问题,那么为什么将其分离样式、javascript 引用和部署过于复杂呢?他们说(微软)One ASP.NET Framework 允许您从任何技术开始,然后再集成任何您想要的技术:Web API、MVC 和 Web 表单。我想使用此功能。
    猜你喜欢
    • 1970-01-01
    • 2017-11-29
    • 2021-04-30
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多