• 也玩ASP.NET MVC 与 WebFroms 整合


    目标:

    以前有老的WebForm应用程序,希望一步步转移到MVC,或者使二者能够部署在一起,把MVC项目整合到之前的WebForm项目中。

    步骤:

    把MVC项目转移到WebForm WebApplication项目中

    1.在之前的WebApplication中引用以下程序集

    • System.Web.Extensions
    • System.Web.Helpers
    • System.Web.Mvc
    • System.Web.Razor
    • System.Web.Routing
    • System.Web.WebPages
    • System.Web.WebPages.Razor

    说明:System.Web.Razor与System.Web.WebPages.Razor可选,如果你的MVC项目使用了Razor引擎则必须添加

    2.配置路由

    把之前在Mvc项目中的路由配置拷贝到WebApplication中,然后在Application_Start事件中注册路由表

     public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );
    
        }
        void Application_Start(object sender, EventArgs e) 
        {
            // Code that runs on application startup
            RegisterRoutes(RouteTable.Routes);
        }
    

    当然别忘了在Global.aspx.cs中引用下列命名空间

    using System.Web.Mvc;
    using System.Web.Routing;
    

    3.复制Controls,Models,View文件夹中的代码到WebApplication项目中

    实际上在开发中大家是把Controls与Models等拆分成独立的项目来开发的,这样只要在WebApplication项目中引用这些项目即可。

    不过目前有一个疑问是:controlers命名空间与当前项目的关系,MVC为何会调用aa.Controlers中的方法而不是,bb.Controlers中的方法

    4.复制web.config中的一下配置节到新项目中<system.web>配置节下

    		<compilation debug="false" targetFramework="4.0">
    			<assemblies>
    				<add assembly="System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    				<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    				<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    				<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    				<add assembly="System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    				<add assembly="System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    				<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    				<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    				<add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>
    

    到这里,基本操作已经完成,上边只是操作简单是Demo,在真实的项目中可能还会遇到其他的问题,注意在操作过程中是否引用了一些其他的程序集等等,一步一步的加进来就可以了。

    当然也是可以整合到Website项目中的,方法类似。在修改Global.aspx时注意使用以下语句引入命名空间

    <%@ Import Namespace="System.Web.Mvc" %>
    <%@ Import Namespace="System.Web.Routing" %>
    
  • 相关阅读:
    Linux 如何改变文件属性与权限: chgrp, chown, chmod
    Linux 路径与命令搜寻顺序
    Log level with log4j and Spark
    java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    JavaScript Promise异步实现章节的下载显示
    npm-folders
    the user operation is waiting for building workspace to complete解决办法
    Eclipse,新建web项目后 出现jax-ws webservice
    ServletContext在tomcat启动的时候创建
  • 原文地址:https://www.cnblogs.com/x2048/p/2022557.html
Copyright © 2020-2023  润新知