混合WebForms / ASP.NET MVC

时间:2009-02-13 15:34:41

标签: asp.net asp.net-mvc

  

可能重复:
  ASP.NET MVC alongside Web Forms in the same web app?

我是.NET应用程序的新手,我有一个我正在处理的Web表单应用程序,我即将开始开发新页面,我正在尝试使用ASP.NET MVC创建新页面,但我不能让页面击中控制器。首先我添加了库引用添加了global.asax上的路由,但不确定还缺少什么,有人可以帮助我吗?

THX。

4 个答案:

答案 0 :(得分:6)

在我收集的内容之间进行阅读,您是否正在尝试 MVC页面添加到现有的ASP.NET Webforms Web应用程序中?

如果是这种情况,那么您可能需要一些MVC特定配置。设置。最简单的方法是创建一个新的MVC Web应用程序,然后合并配置设置。

此外,如果您正在进行混合项目,我建议您就该主题提供Scott Hanselmann's post

答案 1 :(得分:2)

有关在这些链接上将MVC添加到WebForms应用程序的更多分步说明:

您可能还希望使用文本编辑器将ProjectTypeGuid添加到项目文件中({603c0e0b-db56-11dc-be95-000d561079b0}用于指定Visual Studio使用MVC扩展。)

    <ProjectTypeGuids>{603c0e0b-db56-11dc-be95-000d561079b0};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

上面的链接也没有完全覆盖需要配置的web.config的system.webserver区域。

答案 2 :(得分:0)

Scott Hanselman发布了一个“完全不受支持的”Nuget包,它将MVC 3功能添加到现有的Web Forms项目中。它也适用于我的电脑(哈哈),我已经在几个项目中使用过它。

http://nuget.org/List/Packages/AddMvc3ToWebForms

他在这里写博客:

http://www.hanselman.com/blog/CreatingANuGetPackageIn7EasyStepsPlusUsingNuGetToIntegrateASPNETMVC3IntoExistingWebFormsApplications.aspx

一个新提示:此软件包将在/App_Start/RegisterMvc3Routes.cs中配置您的MVC路由

答案 3 :(得分:0)

过去几个月我花了很多时间在这上面。以下是我的观察。

好/容易   - 让Webforms呼叫MVC控制器   - 站起来一个新的MVC3项目并将Webforms个页面放入其中非常容易。   - 我能够将<pages><controls></controls></pages>部分移到新/pages

中的web.config目录中

肮脏/困难

  • Regarding the GUID

    • 请注意,由于某种原因,必须在行的前面添加GUID ...每次我尝试失败时。直到我偶然发现一篇坚持在其他人之前的帖子。
    • 我也不知道有什么不同但我有不同的GUID工作... {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • 将目标网页设为Webforms会造成各种障碍。

  • 让jQuery intellisense与T4MVC
  • 很好地配合

这就是我为解决这个问题而采取的措施

@if (System.Diagnostics.Debugger.IsAttached)
    { 
    <script src="../../Scripts/Mvc3/jquery-1.7-vsdoc.js" type="text/javascript"></script> @* intellisense! *@
     @Html.RelativeJavascript(Links.Scripts.Mvc3.jquery_1_7_js)
     @Html.RelativeJavascript(Links.Scripts.Mvc3.jquery_unobtrusive_ajax_js)
    }
    else
    {
        @Html.RelativeJavascript(Links.Scripts.Mvc3.jquery_1_7_min_js) 
        @Html.RelativeJavascript(Links.Scripts.Mvc3.jquery_unobtrusive_ajax_min_js)  
    }

建议:

  • 即使您是纯网络表单,也可以在所有情况下使用T4MVC。消除静态内容(.js.css,图像,指定模板)的魔术字符串非常出色。