1. 程式人生 > >第1章 進入ASP.NET MVC世界

第1章 進入ASP.NET MVC世界

coo 命名 agent write body order 代碼 ble 服務器變量

第1章 進入ASP.NET MVC世界

ASP.NET 概述

目前開發B/S系統的主要技術有ASP.NET 、JSP、PHP等。其中ASP.NET是

基於.NET平臺創建動態網頁的一種服務器技術,使用它可以創建動態交互

Web頁面。

技術分享圖片

圖1.1 .NET Framework與ASP.NET

ASP.NET MVC簡介

ASP.NET MVC是ASP.NET技術的一個子集,他是ASP.NET技術和MVC模的完美結

合,類似與Java的struts框架。

第一個ASP.NET MVC程序

創建ASP.NET MVC應用

首先,打開VS2012,執行“文件”->“新建”->“項目”命令,左邊項

目類型選擇“web”選項,在中間的.NET框架版本下拉列表選擇“.NET Frame

work4.5”選項,選擇“ASP.NET MVC4 Web應用程序”。

項目結構說明如下:

>App_Data文件夾:用來存放系統包含的數據庫文件。

>App_Start文件夾:包含ASP.NET MVC系統啟動的相關類文件。

>Controllers文件夾:放置整個項目的控制器代碼文件。

>Models文件夾:放置整個項目的模版代碼文件。

>Views文件夾:放置整個項目的視圖代碼文件。

>View下的Web.config文件:作用於視圖的配置文件。

>Global.asax文件:全局應用程序文件,一般和App_Start文件夾中的類配合使用。

>packages.config文件:用於管理項目用到的程序集版本。

>根目錄下的Web.config文件:作用於整個項目的配置文件。

Hello,ASP.NET MVC

1.控制器說明

>System.Web命名空間:ASP.NET核心命名空間。

>System.Web.Mvc命名空間:開發ASP.NET MVC的最基本的命名空間。

>Controller類:每個控制器必須繼承的基類。

>Index()方法:控制器的動作方法,用於響應客戶端請求,並調用相應的視圖輸出信息。

2.基本規則

控制器都已Controller結尾,比如HomeController,當我們創建一個動作

方法Index(),那麽如果讓這個方法返回視圖,它會默認找View文件夾下和控制

器名的文件夾Home,在找文件加下和動作方法重名的Index視圖。

ASP.NET MVC程序的工作原理

1 Global.asax

技術分享圖片

在ASP.NET程序中,Global.asax主要是在系統啟動時做一些全局性的工

作。從上述代碼可以看出,它調用App_Start文件夾中的相關類來完成這些工

作,如調用RouteConfig.Register Routes()來完成路由註冊;調用

FilterConfig.RegisterGlobalFilters()來完成全局過濾器(類似與Struts中

的攔截器)的註冊。

2RouteConfig.cs文件

技術分享圖片

這裏RegisterRoutes()方法的作用就是定義路由,即定義URL訪問規則。

3視圖命名和尋址規則

技術分享圖片

4Web服務器

Web.config中有一項和調試相關的配置,如下所示。

<compilation debug="true" targetFramework="4.5" />

其中,debug=”true”即表示支持調試,在正式發布後,debug還需要設置為

false

ASPX視圖

ASPX視圖的聲明和編碼

1@Page指令

表1-3 @Page指令常用屬性

屬性

說明

Language

指定頁面代碼和後置代碼使用的語言,需要註意的是這裏只支持微軟.net框架中的語言

Inherits

繼承的頁面類,ASPX視圖一般繼承System.Web.ViewPage和

System.Web.View<T>兩種類型

ContentType

指定MIME類型和頁面回應是所采用的字符編碼方式

ValidateRequest

指定是否驗證請求

MasterPageFile

指定使用的模板視圖文件

2@Import指令

在ASPX視圖中,可以通過@Import指令引入新的命名空間.

<%@Import Namespace=”MvcDemo.Helper”%>

3服務器端內嵌語法

<%%>小腳本

<%=%>或<%:%>表達式

<script runat=”server”></script>服務器端腳本塊

母版視圖

1創建母版視圖

技術分享圖片

<%@MasterLanguage="C#"Inherits="System.Web.Mvc.ViewMasterPage"%>

<!DOCTYPEhtml>

<html>

<headrunat="server">

<metaname="viewport"content="width=device-width"/>

<title><asp:ContentPlaceHolderID="TitleContent"runat="server"/></title>

</head>

<body>

<div>

<asp:ContentPlaceHolderID="MainContent"runat="server">

</asp:ContentPlaceHolder>

</div>

</body>

</html>

2使用母版視圖

技術分享圖片

<%@PageTitle=""Language="C#"MasterPageFile="~/Views/PartialView/ViewMasterPage1.Master"Inherits="System.Web.Mvc.ViewPage<dynamic>"%>

<asp:ContentID="Content1"ContentPlaceHolderID="TitleContent"runat="server">

View1

</asp:Content>

<asp:ContentID="Content2"ContentPlaceHolderID="MainContent"runat="server">

<h2>View1</h2>

</asp:Content>

3資源文件加載工具方法

Url.Content(“~/css/style.css”)//~代表服務器根目錄

ASP.NET系統對象

ASP.NET系統對象簡介

ASP.NET中常見的系統對象如下表所示

表1-4 ASP.NET系統對象

對象名稱

說明

Request

用來獲取客戶端在Web請求期間發送的值,如URL參數、表單值等。

Response

用來負責返回到客戶端的HTTP輸出

Application

作用於整個程序運行期的狀態對象,可用來保存整個應用程序的配置參數

Session

會話狀態保持對象

Cookie

客戶端保持會話信息的方式

Server

用於進行一些服務器端處理的工具對象,如URL編碼解碼、頁面轉發

HttpContext

封裝有關個別HTTP請求的所有HTTP特定的信息

1.Request對象

成員

說明

string ContentType

獲取或設置傳入請求的MIME內容類型

HttpCookieCollection Cookies

獲取客戶端發送的Cookie的集合

HttpFileCollection Files

獲取由客戶端上載的文件的集合

NameValueCollection Form

獲取表單提交的數據

NameValueCollection Headers

獲取HTTP頭集合

NameValueCollection QueryString

獲取HTTP查詢字符串變量集合

string RawUrl

獲取當前請求的原始URL

NameValueCollection ServerVariables

獲取Web服務器變量的集合

string UserAgent

獲取客戶端瀏覽器的原始用戶代理信息

string UserHostAddress

獲取遠程客戶端的IP主機地址

string MapPath(string virtualPath)

指定的虛擬路徑映射到物理路徑

void SaveAs(string filename,bool includeHeaders)

將HTTP請求保存到磁盤

2.Response

成員

說明

string ContentType

獲取或設置輸出流的HTTP MIME類型

HttpCookieCollection Cookies

獲取響應Cookie集合

NameValueCollection Headers

獲取響應表頭的集合

void Redirect(string url)

將請求重定向到新的URL

void Write(string s)

將一個字符串寫入HTTP響應輸出流

3.Server對象

常用成員

說明

string MapPath(string path)

返回與Web服務器上的指定虛擬路徑相對應的物理文件路徑

void Transfer(string path)

使用指定的path進行頁面轉發

string UrlDecode(string s)

對字符串進行URL編碼

string UrlEncode(string s)

對字符串進行URL編碼

4.Session對象

常用成員

說明

string SessionID

包含唯一的用戶會話標識符,它可用於在整個會話過程中記錄用戶信息。

int Timeout

用戶超時時間,單位為分鐘,Session中數據的生存期以超時時間為限。

void Abandon()

結束Session,取消當前會話

void Add(string name,object value)

添加Session數據

void Remove(string name)

刪除Session數據

5.Cookie對象

常用成員

說明

string Name

Cookie對象的名稱

string Value

Cookie對象的內容(值)

DateTime Expires

Cookie對象的有效時間。如果沒有設置Cookie的失效日期,它們僅保存到關閉瀏覽器程序為止;如果將Cookie對象的Expires屬性設置為

DateTime.MaxValue,則表示Cookie永遠不會過期。

語法:

Response.Cookies[Cookie的名稱].value=變量值;//寫入Cookie

String 變量名=Request.Cookies[Cookie的名稱].Value;//讀取Cookie

HttpCookie hcCookie = new HttpCookie(“Cookie的名稱”,”值”);

Response.Cookies.Add(hcCookie);

6.Applicaion對象

語法:

Appliation[“Application名稱”]=值;//存值

變量=Application[“Application名稱”];//取值

7.HttpContext對象

常用成員

說明

HttpApplicationState Application

Application對象

HttpRequest Request

Request對象

HttpResponse Response

Response對象

HttpServerUtility Server

Server對象

HttpSessionState Session

Session對象

IPrincipal User

User對象

System.Web.Caching.Cache Cache

Cache對象

static HttpContext Current

為當前HTTP請求獲取或設置

System.Web.HttpContext對象

在某些特殊情況下,可能需要在其他自定義類中訪問這些對象,這是只需要通過HttpContext的Current屬性就能達到目標,用法如下面代碼所示:

System.Web.HttpContext.Current.Response.Redirect(“~/”);

第1章 進入ASP.NET MVC世界