c# - 将 ASP.NET MVC 区域添加到 ASP.NET Web 窗体现有项目

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

我有一个使用 .NET FrameWork 4.5.1 使用 ASP.NET Web Forms 开发的网站

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

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

所以,我所做的是:

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

项目结构如下:

Project Structure

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

问题

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

  2. 我怎样才能让这两个(Web 类型的项目)共存,正如他们所说的那样,可以使用一个 ASP.NET 框架来完成?

谢谢!

最佳答案

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

public class Global : HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        AreaRegistration.RegisterAllAreas();

    }

}

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

关于c# - 将 ASP.NET MVC 区域添加到 ASP.NET Web 窗体现有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30197826/

相关文章:

c# - nuget 无法识别已安装的包

c# - 为整个项目全局命名空间别名

c# - 如何从 SignalR hub 获取 IOwinContext?

c# - 在 MS SQL Server 2008 中加入 "best"匹配的好方法是什么?

c# - 在不使用魔术字符串的情况下将参数传递给 FakeItEasy-mock?

c# - 为什么 String.Clone() 返回原始字符串而不是它的副本?

javascript - 弹出窗口关闭时刷新主页

c# - 用于捕获标记和未标记内容的正则表达式

javascript - window.event javascript 代码在 Firefox 中不起作用

asp.net - 在 ASP.NET 中缓存所有用户