轉(zhuǎn)帖|其它|編輯:郝浩|2010-09-02 15:11:01.000|閱讀 664 次
概述:不是所有的ASP.NET MVC Web應(yīng)用程序都需要從頭創(chuàng)建,也許您希望將現(xiàn)有的ASP.NET應(yīng)用移植到ASP.NET MVC。本文主要介紹如何在同一個應(yīng)用同時使用ASP.NE窗體和ASP.NET MVC。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
不是所有的ASP.NET MVC Web應(yīng)用程序都需要從頭創(chuàng)建,也許您希望將現(xiàn)有的ASP.NET應(yīng)用移植到ASP.NET MVC。在同一個應(yīng)用同時使用ASP.NE窗體和ASP.NET MVC可能嗎?答案是-完全可以。
在同一個應(yīng)用同時使用ASP.NE窗體和ASP.NET MVC不僅是可行的,而且是相當(dāng)容易的,因為ASP.NET MVC是在ASP.NET基礎(chǔ)上構(gòu)建的框架。實際上它們僅有一個關(guān)鍵處不同:ASP.NET是在System.Web名稱空間下,而ASP.NET MVC在System.Web, System.Web.Routing, System.Web.Abstractions, 以及System.Web.Mvc四個名稱空間下,這意味著,在現(xiàn)有ASP.NET應(yīng)用程序中添加對這些庫(assemblies)的引用,是組合應(yīng)用這兩種技術(shù)的起步。
ASP.NET MVC在ASP.NET基礎(chǔ)上構(gòu)建的另外一個優(yōu)點是:應(yīng)用數(shù)據(jù)能夠很容易地在兩種技術(shù)間共享。例如,Session這個狀態(tài)對象在兩種技術(shù)下都可以使用,這樣使得通過Session狀態(tài)來高效地共享數(shù)據(jù)。
一個ASP.NET窗體應(yīng)用程序可以通過執(zhí)行以下步驟,成為一個ASP.NET MVC應(yīng)用程序。
1. 在現(xiàn)有的ASP.NET應(yīng)用程序中,添加以下庫的引用:System.Web.Routing.dll, System.Web.Abstractions.dll, andSystem.Web.Mvc.dll;
2. 在現(xiàn)有ASP.NET應(yīng)用程序中添加Controllers,Views,Views/Shared文件夾;
3. 修改web.config文件,如下(注意是修改ASP.NET應(yīng)用程序現(xiàn)有的web.config,而不是覆蓋掉):
< ?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="false">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions,
Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Abstractions,
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=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
</configuration>
4. 配置路由。
往Global.asax中加入默認的ASP.NET MVC全局應(yīng)用程序類(Global Application Class)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;namespace MixingBothWorldsExample
{
public class Global : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
"Default",
// Route name
"{controller}/{action}/{id}",
// URL with parameters
new { controller = "Home", action = "Index", id = "" }
// Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
請注意以下一行代碼,它防止ASP.NET窗體的請求被路由到ASP.NET MVC中:
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
以上四個步驟完成后,我們便可以開始添加ASP.NET MVC控制器和視圖了,例如:
using System.Web.Mvc;
namespace MixingBothWorldsExample.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "This is ASP.NET MVC!";
return View();
}
}
}<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="Index.aspx.cs"
Inherits="MixingBothWorldsExample.Views.Home.Index" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="//www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<div>
<h1><%=Html.Encode(ViewData["Message"]) %></h1>
</div>
</body>
</html>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載