天天看點

asp.net簡述WP開發模式

詳情請參考菜鳥教程:http://www.runoob.com/aspnet/aspnet-tutorial.html

1.ASP.NET 是一個使用 HTML、CSS、JavaScript 和伺服器腳本建立網頁和網站的開發架構。

2.ASP.NET 支援三種不同的開發模式:Web Pages(Web 頁面)、MVC(Model View Controller 模型-視圖-控制器)、Web Forms(Web 窗體)

 其中,Web Pages 是開發 ASP.NET 網站最簡單的開發模式。

   使用 VB (Visual Basic) 或者 C# (C sharp) 最新的 Razor 伺服器标記文法将 HTML、CSS、JavaScript 和伺服器代碼結合起來。

3.ASP.NET 是新一代 ASP 。它與經典 ASP 是不相容的,但 ASP.NET 可能包括經典 ASP。

   ASP.NET 頁面是經過編譯的,這使得它們的運作速度比經典 ASP 快。

   ASP.NET 具有更好的語言支援,有一大套的使用者控件和基于 XML 的元件,并內建了使用者身份驗證。

  ASP.NET 頁面的擴充名是 .aspx ,通常是用 VB (Visual Basic) 或者 C# (C sharp) 編寫。

  在 ASP.NET 中的控件可以用不同的語言(包括 C++ 和 Java)編寫。

4.Razor 是一種将伺服器代碼嵌入到 ASP.NET 網頁中的新的、簡單的标記文法,很像經典 ASP 。

   經典 ASP 檔案的檔案擴充名為 .asp

 ASP.NET 檔案的檔案擴充名為 .aspx

   Razor C# 文法的 ASP.NET 檔案的檔案擴充名為 .cshtml

   Razor VB 文法的 ASP.NET 檔案的檔案擴充名為 .vbhtml

5.Web Pages(Web 頁面)WP開發模式(提供了一種簡單的方式來将 HTML、CSS、JavaScript 和伺服器腳本結合起來)

 xxx .cshtml檔案

<!DOCTYPE html>
<html>
<body>
     <h1>Hello Web Pages</h1> 
     <p>The time is @DateTime.Now</p>
</body>
</html>      
  • Razor 是一種将基于伺服器的代碼添加到網頁中的标記文法
  • Razor 具有傳統 ASP.NET 标記的功能,但更容易使用并且更容易學習
  • Razor 是一種伺服器端标記文法,與 ASP 和 PHP 很像
  • Razor 支援 C# 和 Visual Basic 程式設計語言

主要的 Razor C# 文法規則

  • Razor 代碼塊包含在 @{ ... } 中
  • 内聯表達式(變量和函數)以 @ 開頭
  • 代碼語句用分号結束
  • 變量使用 var 關鍵字聲明
  • 字元串用引号括起來
  • C# 代碼區分大小寫
  • C# 檔案的擴充名是 .cshtml
<html>
<body>
<!-- Single statement block -->
@{ var myMessage = "Hello World"; }

<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p> 

<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}

<p>The greeting is: @greetingMessage</p>
</body>
</html>      

主要的 Razor VB 文法規則

  • Razor 代碼塊包含在 @Code ... End Code 中
  • 變量使用 Dim 關鍵字聲明
  • VB 代碼不區分大小寫
  • VB 檔案的擴充名是 .vbhtml
<!-- Single statement block  --> 
@Code dim myMessage = "Hello World" End Code
 
<!-- Inline expression or variable --> 
<p>The value of myMessage is: @myMessage</p> 
 
<!-- Multi-statement block --> 
@Code
dim greeting = "Welcome to our site!" 
dim weekDay = DateTime.Now.DayOfWeek 
dim greetingMessage = greeting & " Here in Huston it is: " & weekDay
End Code 

<p>The greeting is: @greetingMessage</p>      

Web Pages - 頁面布局

内容塊(來自另一個檔案)能被導入網頁中的任何地方。内容塊可以包含文本,标記和代碼,就像任何普通的網頁一樣。

使用 @RenderPage() 方法從不同的檔案導入内容。

<html>
<body>
@RenderPage("header.cshtml")
<h1>Hello Web Pages</h1> 
<p>This is a paragraph</p>
@RenderPage("footer.cshtml")
</body>
</html>      

Layout Page(布局頁)

布局頁中使用 @RenderBody() 方法嵌入内容頁,除此之外,它與一個正常的網頁沒有什麼差别。

布局頁:

<html>
<body>
<p>This is header text</p>
@RenderBody()
<p>&copy; 2012 Runoob. All rights reserved.</p>
</body>
</html>      

内容頁:

@{Layout="Layout.cshtml";}

<h1> Welcome to W3Cschool </h1>

<p>Hello!!! </p>      

通過 Content Blocks(内容塊)和 Layout Pages(布局頁)這兩個 ASP.NET 工具,可以讓 Web 應用程式顯示一緻的外觀。

防止檔案被浏覽

在 ASP.NET 中,檔案的名稱以下劃線開頭,可以防止這些檔案在網上被浏覽。

如果不希望内容塊或者布局頁被使用者看到,可以重命名這些檔案:

_header.cshtm

_footer.cshtml

_Layout.cshtml

隐藏敏感資訊

在 ASP.NET 中,隐藏敏感資訊(資料庫密碼、電子郵件密碼等等)最通用的方法是将這些資訊儲存在一個名為"_AppStart.cshtml"的單獨的檔案中。

@{
WebMail.SmtpServer = "mailserver.example.com";
WebMail.EnableSsl = true;
WebMail.UserName = "[email protected]";
WebMail.Password = "your-password";
WebMail.From = "[email protected]";
}      

6.Web Pages - 檔案夾

邏輯檔案夾結構和實體檔案夾結構

虛拟名稱和實體名稱

URL 和路徑

ASP.NET 檔案夾路徑有 3 種工具:~ 運算符、Server.MapPath 方法 和 Href 方法。

  使用 ~ 運算符,在程式設計代碼中規定虛拟路徑

    var myStyleSheet = "~/styles/StyleSheet.css";

  Server.MapPath 方法

    Server.MapPath 方法将虛拟路徑(/index.html)轉換成伺服器能了解的實體路徑(C:\Documents\MyWebSites\Demo\default.html)

      var pathName = "~/dataFile.txt";

      var fileName = Server.MapPath(pathName);

  Href 方法将代碼中的使用的路徑轉換成浏覽器可以了解的路徑(浏覽器無法了解 ~ 運算符)

    一般會在 HTML 中的 <a>、<img> 和 <link> 元素中使用此方法:

      @{var myStyleSheet = "~/Shared/Site.css";}

      <link rel="stylesheet" type="text/css" href="@Href(myStyleSheet)" />等價于:

      <link rel="stylesheet" type="text/css" href="/Shared/Site.css" />

      Href 方法是 WebPage 對象的一種方法。

7.Web Pages - 全局頁面

在 Web 啟動之前:_AppStart

站點根目錄下建立一個名為 _AppStart 的頁面,這樣在站點啟動之前可以先啟動代碼執行。

_AppStart 的典型用途是啟動代碼和初始化全局數值(比如計數器和全局名稱)。

注釋 1:_AppStart 的檔案擴充名與您的網頁一緻,比如:_AppStart.cshtml。

注釋 2:_AppStart 有下劃線字首。是以,這些檔案不可以直接浏覽。

在每一個頁面之前:_PageStart

可以編寫在每個檔案夾中的任何頁面之前運作的代碼。

_PageStart 的典型用途是為一個檔案夾中的所有頁面設定布局頁面,或者在運作某個頁面之前檢查使用者是否已經登入。

當接收到一個請求時,ASP.NET 會首先檢查 _AppStart 是否存在。 如果 _AppStart 存在且這是站點接收到的第一個請求,則運作 _AppStart。

然後 ASP.NET 檢查 _PageStart 是否存在。如果 _PageStart 存在,則在其它被請求的頁面運作之前先運作 _PageStart。

您可以在 _PageStart 中調用 RunPage() 來指定被請求頁面的運作位置。否則,預設情況下,被請求頁面是在 _PageStart 運作之後才被運作。

8.Web Pages - HTML 表單

  表單是 HTML 文檔中放置輸入控件(文本框、複選框、單選按鈕、下拉清單)的部分

<!DOCTYPE html>
<html> 
<body> 
@{
if (IsPost)
{ 
string companyname = Request["CompanyName"]; 
string contactname = Request["ContactName"]; 
<p>You entered: <br> 
Company Name: @companyname <br> 
Contact Name: @contactname </p> 
}
else
{
<form method="post" action="">
Company Name:<br> 
<input type="text" name="CompanyName" value=""><br>
Contact Name:<br><br>
<input type="text" name="ContactName" value=""><br><br>
<input type="submit" value="Submit" class="submit">
</form> 
}
} 
</body> 
</html>      

顯示圖像

<img src="images/Photo1.jpg" alt="Sample" />

9.Web Pages - 對象

Page 對象

使用的 Page 對象方法:

@RenderPage("header.cshtml")

@RenderBody()

.......

Page 對象屬性(isPost 和 Request)......

Page 對象的 Page 屬性,提供了對頁面和布局頁之間共享的資料的類似屬性通路。

可以對 Page 屬性使用(添加)自己的屬性:

  • Page.Title
  • Page.Version
  • Page.anythingyoulike

頁面屬性是非常有用的。例如,在内容檔案中設定頁面标題,并在布局檔案中使用:

@{
Layout="~/Shared/Layout.cshtml";
Page.Title="Home Page"
}

<h1>Welcome to runoob.com</h1> 

<h2>Web Site Main Ingredients</h2>

<p>A Home Page (Default.cshtml)</p>
<p>A Layout File (Layout.cshtml)</p>
<p>A Style Sheet (Site.css)</p>      
<!DOCTYPE html>
<html>
<head>
<title>@Page.Title</title>
</head>
<body>
@RenderBody()
</body>
</html      

10.Pages - 檔案

如果沒有 App_Data 檔案夾,請建立一個。在 App_Data 檔案夾中,建立一個名為 Persons.txt 的檔案。

檔案内容為: 

George,Lucas

Steven,Spielberg

Alfred,Hitchcock

顯示文本檔案中的資料

使用 Server.MapPath 找到确切的文本檔案的路徑。

使用 File.ReadAllLines 打開文本檔案,并讀取檔案中的所有行到一個數組中。

數組中的每個資料行中的資料項的資料被顯示。

@{
var dataFile = Server.MapPath("~/App_Data/Persons.txt");
Array userData = File.ReadAllLines(dataFile);
}

<!DOCTYPE html>
<html>
<body>

<h1>Reading Data from a File</h1>
@foreach (string dataLine in userData) 
{
foreach (string dataItem in dataLine.Split(',')) 
{@dataItem <text>&nbsp;</text>}
<br />
}
</body>
</html>      

11.Web Pages - 幫助器(Web 幫助器大大簡化了 Web 開發和常見的程式設計任務)

可以使用存放在 .cshtml 檔案中的 Razor 文法建構自己的幫助器,或者使用内建的 ASP.NET 幫助器。

WebGrid 幫助器

  var grid = new WebGrid(data); 

  @grid.GetHtml();

Chart 幫助器

  Chart 幫助器顯示的資料來源可以是數組、資料庫或者檔案。

  根據數組資料顯示圖表:

@{ 
var myChart = new Chart(width: 600, height: 400) 
   .AddTitle("Employees") 
   .AddSeries(chartType: "column",
      xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" }, 
      yValues: new[] { "2", "6", "4", "5", "3" }) 
   .Write();
}      

  根據資料庫建立圖表:               略.......

  根據 XML 資料建立圖表:         略.......

WebMail 幫助器

WebImage 幫助器

第三方幫助器

————安裝幫助器

12.Web Pages - 釋出網站

............