WebForm與MVC混用


步驟一:添加引用 -> 程序集 -> 擴展 ->

  • System.Web.Mvc ;
  • System.Web.Razor;
  • System.Web.WebPages;
  • System.Web.Abstractions;

步驟二:mvc默認目錄結構 

  新建一個空的mvc項目, 將Controllers和Views文件夾全部拷貝過來(文件結構和web.config這個很重要)

步驟三:修改配置文件web.config(不是Views文件夾下的)

  1.在compilation節點下加入以下幾個assemblies :

<compilation debug="true" targetFramework="xx">  // 框架版本不用動
      <assemblies>  
        <add assembly="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>  
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>  
        <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>  
        <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>  
      </assemblies>  
</compilation>  

  2. 還有一個需要注意的: 在configuration節點下加入   <modules runAllManagedModulesForAllRequests="true"/>  

     -- 不過我把這個去掉也調試成功了,  這個貌似只是設置每個請求都會執行Global.cs里邊的BeginRequest事件而已

<configuration>
  <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

步驟四:路由設置

  1. 可以按照mvc慣例 在App_Start文件夾中創建路由配置靜態方法;RouteConfig.cs文件代碼如下

using System;
using System.Collections.Generic;
using System.Linq;  
using System.Web;
using System.Web.Mvc;   // 引入命名空間 才能注冊mvc的路由
using System.Web.Routing;  // 引入命名空間

namespace webform
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");  // web form訪問方式
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }
    }
}

  2. 然后在Global.cs中注冊

    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            RouteConfig.RegisterRoutes(RouteTable.Routes);  

接着就可以寫你的controller和View

按照以上步驟調試成功 ╮(╯▽╰)╭ 

 

 示例代碼:Asp.netMigrateToMVC.zip

ps: 個人對配置文件里的各個節點作用不是很理解, 就新建了一個空mvc項目然后把Views里邊的東西全部拷貝過來

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM