ASP.NET窗体和ASP.NET MVC在同一应用中混合使用
创始人
2024-04-01 18:50:53
0

不是所有的ASP.NET MVC Web应用程序都需要从头创建,也许您希望将现有的ASP.NET应用移植到ASP.NET MVC。在同一个应用同时使用ASP.NE窗体和ASP.NET MVC可能吗?答案是-完全可以。

在同一个应用同时使用ASP.NE窗体和ASP.NET MVC不仅是可行的,而且是相当容易的,因为ASP.NET MVC是在ASP.NET基础上构建的框架。实际上它们仅有一个关键处不同:ASP.NET是在System.Web名称空间下,而ASP.NET MVC在System.Web, System.Web.Routing, System.Web.Abstractions, 以及System.Web.Mvc四个名称空间下,这意味着,在现有ASP.NET应用程序中添加对这些库(assemblies)的引用,是组合应用这两种技术的起步。

ASP.NET MVC在ASP.NET基础上构建的另外一个优点是:应用数据能够很容易地在两种技术间共享。例如,Session这个状态对象在两种技术下都可以使用,这样使得通过Session状态来高效地共享数据。

一个ASP.NET窗体应用程序可以通过执行以下步骤,成为一个ASP.NET MVC应用程序。

1.在现有的ASP.NET应用程序中,添加以下库的引用:System.Web.Routing.dll, System.Web.Abstractions.dll, andSystem.Web.Mvc.dll;

2.在现有ASP.NET应用程序中添加Controllers,Views,Views/Shared文件夹;

3.修改web.config文件,如下(注意是修改ASP.NET应用程序现有的web.config,而不是覆盖掉):

 

  1. < ?xml version="1.0"?> 
  2.  
  3.   
  4.     
  5.       
  6.                              PublicKeyToken=B77A5C561934E089"/> 
  7.                              Version=3.5.0.0, Culture=neutral,  
  8.                       PublicKeyToken=31BF3856AD364E35"/> 
  9.                              Version=3.5.0.0, Culture=neutral,  
  10.                       PublicKeyToken=31BF3856AD364E35"/> 
  11.                              Version=3.5.0.0, Culture=neutral,  
  12.                       PublicKeyToken=31BF3856AD364E35"/> 
  13.       
  14.     
  15.     
  16.       
  17.         
  18.         
  19.         
  20.         
  21.         
  22.         
  23.       
  24.     
  25.     
  26.                type="System.Web.Routing.UrlRoutingModule,  
  27.                 System.Web.Routing, Version=3.5.0.0,  
  28.                 Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
  29.     
  30.   
  31.  

4.配置路由。往Global.asax中加入默认的ASP.NET MVC全局应用程序类(Global Application Class)。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Mvc;  
  6. using System.Web.Routing;  
  7.  
  8. namespace MixingBothWorldsExample  
  9. {  
  10.    public class Global : System.Web.HttpApplication  
  11.    {  
  12.        public static void RegisterRoutes(RouteCollection routes)  
  13.        {  
  14.            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
  15.            routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");  
  16.            routes.MapRoute(  
  17.               "Default",  
  18. // Route name  
  19.               "{controller}/{action}/{id}",  
  20. // URL with parameters  
  21.               new { controller = "Home", action = "Index", id = "" }  
  22. // Parameter defaults  
  23.                );  
  24.        }  
  25.        protected void Application_Start()  
  26.        {  
  27.            RegisterRoutes(RouteTable.Routes);  
  28.        }  
  29.    }  

请注意以下一行代码,它防止ASP.NET窗体的请求被路由到ASP.NET MVC中:

routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

以上四个步骤完成后,我们便可以开始添加ASP.NET MVC控制器和视图了,例如:

  1. using System.Web.Mvc;  
  2. namespace MixingBothWorldsExample.Controllers  
  3. {  
  4.    public class HomeController : Controller  
  5.    {  
  6.        public ActionResult Index()  
  7.        {  
  8.            ViewData["Message"] = "This is ASP.NET MVC!";  
  9.            return View();  
  10.        }  
  11.    }  
  1. <%@ Page Language="C#" 
  2.    AutoEventWireup="true" 
  3.    CodeBehind="Index.aspx.cs" 
  4.    Inherits="MixingBothWorldsExample.Views.Home.Index" %> 
  5.  
  6.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  7.  
  8.  
  9.     
  10.  
  11.  
  12.    
     
  13.        

    <%=Html.Encode(ViewData["Message"]) %>

     
  14.    
 
  •  
  •  
  •  

    【编辑推荐】

    1. ASP.NET MVC教程:创建TaskList应用程序
    2. ASP.NET MVC教程:理解模型、视图和控制器
    3. 在ASP.NET MVC中使用UpdatePanel
    4. ASP.Net MVC框架配置与分析
    5. 简单理解ASP.NET MVC基本知识

    相关内容

    热门资讯

    如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
    如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
    施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
    20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
    德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
    为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
    《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
    2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...