ASP.NET窗体和ASP.NET MVC在同一应用中混合使用

ASP.NET窗体和ASP.NET MVC在同一应用中混合使用

来源:本站原创 更新时间:2009-6-15

来源:51cto.com

   不是所有的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. <configuration> 
  3.  <system.web> 
  4.    <compilation debug="false"> 
  5.      <assemblies> 
  6.        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral,  
  7.                       PublicKeyToken=B77A5C561934E089"/> 
  8.        <add assembly="System.Web.Extensions,  
  9.                       Version=3.5.0.0, Culture=neutral,  
  10.                       PublicKeyToken=31BF3856AD364E35"/> 
  11.        <add assembly="System.Web.Abstractions,  
  12.                       Version=3.5.0.0, Culture=neutral,  
  •                       PublicKeyToken=31BF3856AD364E35"/> 
  •        <add assembly="System.Web.Routing,  
  •                       Version=3.5.0.0, Culture=neutral,  
  •                       PublicKeyToken=31BF3856AD364E35"/> 
  •      </assemblies> 
  •    </compilation> 
  •    <pages> 
  •      <namespaces> 
  •        <add namespace="System.Web.Mvc"/> 
  •        <add namespace="System.Web.Mvc.Ajax"/> 
  •        <add namespace="System.Web.Mvc.Html" /> 
  •        <add namespace="System.Web.Routing"/> 
  •        <add namespace="System.Linq"/> 

    <add namespace="System.Collections.Generic"/> 

  •      </namespaces> 
  •    </pages> 
  •    <httpModules> 
  •      <add name="UrlRoutingModule" 
  •           type="System.Web.Routing.UrlRoutingModule,  
  •                 System.Web.Routing, Version=3.5.0.0,  
  •                 Culture=neutralPublicKeyToken=31BF3856AD364E35/> 
  •    </httpModules> 
  •  </system.web> 

    </configuration> 

       

         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}");
    1.            routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");  
    2.            routes.MapRoute(  
    3.               "Default",  
    4. // Route name  
    5.               "{controller}/{action}/{id}",  
    6. // URL with parameters  
    7.               new { controller = "Home", action = "Index", id = "" }  
    8. // Parameter defaults  
    9.                );  
    10.        }  
    11.        protected void Application_Start()  
    12.        {  
    13.            RegisterRoutes(RouteTable.Routes);  
    14.        }  
    15.    }  
      1.  

           请注意以下一行代码,它防止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" 

        Inherits="MixingBothWorldsExample.Views.Home.Index" %> 

      2.  
      3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
      4.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
      5. <html xmlns="http://www.w3.org/1999/xhtml" > 
      6. <head id="Head1" runat="server"> 
      7.    <title></title> 
      8. </head> 
      9. <body> 
      10.    <div> 
      11.        <h1><%=Html.Encode(ViewData["Message"]) %></h1> 
      12.    </div> 
      13. </body> 
      14. </html> 
          </PRE< p>

           

           

        • 0
          点赞
        • 0
          收藏
          觉得还不错? 一键收藏
        • 0
          评论

        “相关推荐”对你有帮助么?

        • 非常没帮助
        • 没帮助
        • 一般
        • 有帮助
        • 非常有帮助
        提交
        评论
        添加红包

        请填写红包祝福语或标题

        红包个数最小为10个

        红包金额最低5元

        当前余额3.43前往充值 >
        需支付:10.00
        成就一亿技术人!
        领取后你会自动成为博主和红包主的粉丝 规则
        hope_wisdom
        发出的红包
        实付
        使用余额支付
        点击重新获取
        扫码支付
        钱包余额 0

        抵扣说明:

        1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
        2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

        余额充值