国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ASP.NET 視圖引擎攻略

開發 后端
即使是寫代碼的本人,閉合也是一件麻煩的事情,并且VS對”<% %>“的自動縮進和對齊支持不很友好,看慣了整齊的代碼,面對自己寫出的凌亂的東西會很不爽。

引子

看下面一段MVC 2.0的代碼。

  1. <%if (Model != null)  
  2. {%> 
  3.  <p><%=Model%></p> 
  4. <%}%> 
  5. <%else  
  6. {%> 
  7.  //Do something  
  8. <%}%> 

我們站在一個讀者的立場上來看,”<% %>“這種標記C#代碼的方法是十分蛋疼的。

如果寫這段代碼的人沒有良好的縮進和對齊習慣的話,一段邏輯較為復雜的代碼就會堆砌著雜亂無章的"<%"%>"--匹配它們就是一件頭疼的事情,會讓讀者望而生畏。

即使是寫代碼的本人,閉合也是一件麻煩的事情,并且VS對”<% %>“的自動縮進和對齊支持不很友好,看慣了整齊的代碼,面對自己寫出的凌亂的東西會很不爽。

隨著MVC 3.0的發布,新的Razor視圖引擎解決了這個問題。

Razor的意思的就是 剃刀,可見它灰常犀利。引言中的代碼,我們用Razor的語法來寫的話:

  1. @if (Model != null)    
  2. {  
  3.   <p>@Model</p> 
  4. }  
  5. else  
  6. {  
  7.     //Do something   

Razor使用了"@"來標記一段C#代碼,并幫我們進行了內部的閉合,是不是感覺清爽多了?

Razor在減少代碼冗余、增強代碼可讀性和vs 智能感知方面,都有著很大的優勢。下面我們來具體的介紹如何在ASP.NET MVC 3.0中使用Razor。

一,創建基于Razor的Web程序

首先你的開發環境必須安裝.NET Framework4.0,然后在VS中新建項目時選擇ASP.NET MVC 3 應用程序,在選項頁面中選擇視圖引擎為Razor,如圖1:

  圖1

然后創建項目,就會得到一個基于Razor的Web項目了,如圖2。  

   圖2

相信熟悉MVC的看官們對此結構并不陌生。注意紅框部份,Razor的頁面是以cshtml為后綴的,下面我們來講下如何使用Razor來進行頁面布局。

二,使用Razor來進行頁面布局

UI設計師們現在也講究頁面設計的語義化和結構化,把一個頁面分成很多個模塊,使用語義化的類名或id來標識這些模塊。Razor推出了新的布局解決方案來迎合這一潮流。

這里涉及到Razor的一些語法,大家可以不深究"@"后面的內容,講到頁面布局,你只要專注與HTML代碼就可以了。語法會在后面補充。

1.指定母版與加載機制

首先我們來看_ViewStart.chhtml頁面,它的內容很簡單:

  1. @{  
  2.     Layout = "~/Views/Shared/_Layout.cshtml";  

這句代碼指定了默認的母版的位置: 當前應用程序根目錄下<"~"的含義>的Views/Shared/_Layout.cshtml

除非特殊情況,比如視圖是Partial視圖,或顯示的在視圖中添加以下代碼指示不使用母版:

  1. @{  
  2.     Layout = null;  

其他情況下,該指定頁就是視圖的母版頁。

然后我們來看看Razor母版頁_Layout.cshtml的內容:

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.  
  6.     <title>@ViewBag.Title</title> 
  7.     <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
  8.     <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
  9. </head> 
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  11. <body> 
  12.     <div class="page"> 
  13.         <div id="header"> 
  14.             <div id="title"> 
  15.                 <h1>我的 MVC 應用程序</h1> 
  16.             </div> 
  17.             <div id="logindisplay"> 
  18.                 歡迎 <strong>@User.Identity.Name</strong>!  
  19.             </div> 
  20.             <div id="menucontainer"> 
  21.                 <ul id="menu"> 
  22.                     <li>@Html.ActionLink("主頁", "Index", "Home")</li> 
  23.                     <li>@Html.ActionLink("關于", "About", "Home")</li> 
  24.                 </ul> 
  25.             </div> 
  26.         </div> 
  27.         <div id="main"> 
  28.             @RenderBody()<!--一般視圖內容的占位符--> 
  29.         </div> 
  30.         <div id="footer"> 
  31.         </div> 
  32.     </div> 
  33. </body> 
  34. </html> 

注意@RenderBody()這個方法相當于一個占位符,假如我們的首頁視圖Index.cshtml是這樣,

  1. @{  
  2.     ViewBag.Title = "主頁";  
  3. }  
  4.  
  5. <h2>@ViewBag.Message</h2> 
  6. <p> 
  7.     若要了解有關 ASP.NET MVC 的更多信息,請訪問 <a href="http://asp.net/mvc" title="ASP.NET MVC 網站">http://asp.net/mvc</a>。  
  8. </p> 

一般的視圖處理,比如當服務器響應一個HomeController.Index()請求的時候,需要返回Index視圖,

首先會加載母版頁_Layout.cshtml的內容,遇到@RenderBody()時,就用首頁視圖的內容置換到這里,最后處理完成返回靜態頁面。

2.使用Partial視圖

MVC 2.0中,你需要使用<asp:Content></asp:Content>標簽來進行頁面分割,太多的話自己都忘記了哪個對應的是哪個部份。

在Razor中,可以將需要剝離出來的部份作為一個單獨的Partial視圖,比如網站的頭部(Logo,導航等等..),底部(友情鏈接,版權聲明等等..),或是某個功能模塊(登陸框等等..)。

比如上面的母版頁,我們可以把它的頭部和底部剝離出來,在Share文件夾下右鍵添加/視圖,選擇創建為分部視圖,如圖3:

    圖3

依照上述步驟創建”_HeaderPartial.cshtml“和"_FooterPartial.cshtml"兩個視圖

  1. <!--_HeaderPartial.cshtml--><div id="header"> 
  2.             <div id="title"> 
  3.                 <h1>我的 MVC 應用程序</h1> 
  4.             </div> 
  5.             <div id="logindisplay"> 
  6.                 歡迎 <strong>@User.Identity.Name</strong>!  
  7.             </div> 
  8.             <div id="menucontainer"> 
  9.                 <ul id="menu"> 
  10.                     <li>@Html.ActionLink("主頁", "Index", "Home")</li> 
  11.                     <li>@Html.ActionLink("關于", "About", "Home")</li> 
  12.                 </ul> 
  13.             </div> 
  14.         </div> 
  1. <!--_FooterPartial.cshtml--><div id="footer"> 
  2. © 2008-2012 John Connor All rights reserved.  
  3. </div> 

可以看出,提取Partial視圖很簡單,就是把需要的內容提取出來,放在新建的Partial視圖中。然后,我們還需要干一件事情,

類似于一般視圖,Partial視圖使用自己特有的占位符來替換原內容。我們這么干之后,原_Layout.cshtml頁就變成了這樣:

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  5.  
  6.     <title>@ViewBag.Title</title> 
  7.     <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
  8.     <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
  9. </head> 
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
  11. <body> 
  12.     <div class="page"> 
  13.         @Html.Partial("_HeaderPartial")<!--_HeaderPartial視圖占位符--> 
  14.         <div id="main"> 
  15.             @RenderBody()   
  16.         </div> 
  17.          @Html.Partial("_FooterPartial")<!--_FooterPartial視圖占位符--> 
  18.     </div> 
  19. </body> 
  20. </html> 

這樣,頁面的布局是不是更清爽簡潔了?如同一般視圖,返回請求時會先加載母版頁然后遇到占位符時加載相應的Partial視圖,最后返回處理完成的靜態頁面。

三,Razor語法簡介與應用

1.語法簡介

如果我們希望在HTML代碼中綁定數據,比如說我們有一個產品的對象Product,需要綁定產品的名稱Product.Name,只需要在變量前面加"@"即可,

也可以使用"@(expression)"綁定一個表達式:

  1. <p>@Product.Name</p> 
  2. <p>@(Product.Price*0.8)</p> 

Razor中使用”@{code}“來標識一段C#代碼,代碼段可以出現在任何位置,并且支持與HTML混寫:

  1. @{  
  2.     var product=new product();  
  3.     product.Name="pen";  
  4.     product.Price=1.00;    <p>@product.Name</p>    <p>@product.Price</p>} 

使用循環或條件語句時直接加"@"前綴,可以控制頁面邏輯:

  1. @foreach(var product in products)  
  2. {  
  3.     <p>@item.Name</p> 
  4. } 

Razor中注釋是"@**@",即可以注釋Html代碼,也可以注釋C#代碼,在代碼塊中仍可使用C#的注釋方式:

  1. @{  
  2.     var product=new product();  
  3.     product.Name="pen";  
  4.     //product.Price=1.00;  
  5.     <p>@product.Name</p> 
  6.     @*<p>@product.Price</p>*@  
  7.  } 

2.ASP.NET MVC3.0 Web中的應用

假設我們有一個Product類位于JohnConnor.Data命名空間下,有NamePrice兩個屬性,HomeController.Index()方法返回一個List<Product>對象給Index視圖,打印所有產品名稱,并且點擊產品名稱時,彈出產品價格。

HomeController.Index()方法如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Mvc;  
  6. using JohnConnor.Data;  
  7.  
  8. namespace JohnConnor.Web.Controllers  
  9. {  
  10.     public class HomeController : Controller  
  11.     {  
  12.         public ActionResult Index()  
  13.         {  
  14.             var products = new List<Product>()  
  15.             {  
  16.                 new Product{ Name="鋼筆"Price=11.55M},  
  17.                 new Product{ Name="鉛筆"Price=2.17M},  
  18.                 new Product{ Name="圓珠筆"Price=5.98M},  
  19.             };  
  20.             return View(products);  
  21.         }  
  22.     }  

我們來改一下Index視圖演示一下Razor的簡單應用。

  1. @using JohnConnor.Data;  
  2. @model List<Product> 
  3. @{  
  4.     ViewBag.Title = "主頁";//母版中ViewBag.Title用于綁定Title標簽,這里進行賦值。  
  5. }  
  6. <h2>Razor</h2> 
  7. @foreach (var product in Model)  
  8. {  
  9.     //遍歷所有的產品  
  10.     <input type="button" name="@product.Name"   value="@product.Name" onclick="alert(@product.Price)" /> 

在一般視圖中,首先聲明視圖模型,即Action返回的ViewResult對象的類型<也可以不聲明,如果有返回對象建議聲明>

這里的視圖模型是一個List<Product>集合,因為Product位于using JohnConnor.Data命名空間,所以先添加了引用。

母版中ViewBag.Title用于綁定Title標簽,在一般視圖中就可以進行賦值來綁定頁面的Title 。

如果你不想使用母版,就在代碼塊中添加"Layout = null;"。

最后是就是一些數據綁定,或者是邏輯的處理。

Razor的基本內容大概就講這些了,當然它還有很豐富的底蘊,需要在實際的運用過程中去學習,一篇短文是無法涵蓋所有信息的。

最后提一點,Razor暫時沒有設計視圖,這是比較悲摧的一點。相信之后會有的。如果對Razor的使用有任何問題,可以在此提出,能力范圍內的問題我都可以提供幫助。

原文地址:http://www.cnblogs.com/John-Connor/archive/2012/05/08/2487200.html

【編輯推薦】

責任編輯:張偉 來源: 菊花臺泡茶的博客
相關推薦

2012-06-26 10:24:51

Asp.Net框架Razor

2009-07-21 15:11:14

ASP.NET Rou

2021-06-22 16:59:56

微軟.NETC# 軟件開發

2014-07-29 10:00:30

ASP.NETMVCAutoFac

2009-08-07 15:32:28

ASP.NET復合控件

2009-07-28 17:17:19

ASP.NET概述

2009-08-03 14:22:33

什么是ASP.NET

2009-07-22 17:45:35

ASP.NET教程

2009-08-10 14:25:33

ASP.NET服務器控

2009-10-09 10:52:43

ASP.NET模板引擎

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-08-04 15:13:38

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-07-29 17:11:25

ASP.NET ISA

2009-07-29 16:08:07

ASP和ASP.NET

2011-07-12 15:03:28

2009-07-28 09:02:32

asp.net aja

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-08-03 13:38:18

ASP.NET編程模型

2011-01-19 11:17:36

點贊
收藏

51CTO技術棧公眾號

久久免费美女视频| 99久久国产综合精品女不卡| 俺要去色综合狠狠| 日韩欧美国产免费播放| 日韩精品福利一区二区三区| 亚洲自拍偷拍欧美| 一区高清视频| 久久久亚洲精品无码| 久久影视一区| 日韩在线中文视频| 日本不良网站在线观看| 五月天欧美精品| 国产亚洲精品高潮| av在线不卡免费| 欧美无乱码久久久免费午夜一区| jizzjizzji欧美| 欧美激情一区在线观看| 中国女人做爰视频| 激情亚洲综合在线| 欧美一区三区四区| 国产精品一区二区久久久久| 一区二区三区在线资源| 一区二区三区视频免费| gogo在线高清视频| 日韩欧美一区在线观看| 第一av在线| 久久香蕉国产线看观看av| 国产精品99久久久久久大便| 思思99re6国产在线播放| 一区二区免费在线播放| 阳光姐妹淘韩国版| 日韩欧美高清在线视频| 亚洲制服国产| 日韩小视频在线| 国产日产欧美视频| 久久一区二区三区四区| 日本三级黄色网址| 青草国产精品| 91福利入口| 秋霞电影网一区二区| 一区二区三区av| 色老板在线视频一区二区| 成人a在线视频| 素人av在线| 永久免费看mv网站入口亚洲| 亚洲女娇小黑人粗硬| 一不卡在线视频| 亚洲精品一区av在线播放| 高潮在线视频| 午夜精品一区二区三区在线视频| 最新亚洲精品| 日本一区视频在线播放| 激情综合网最新| 香蕉自在线视频| 亚洲视频axxx| 欧美午夜精品一区二区三区电影| 韩国成人一区| 一区二区中文视频| 成人免费一区| 91中文字幕在线观看| 亚洲影音先锋| 永久免费看mv网站入口亚洲| 精品午夜视频| 这里只有精品电影| 成人免费在线小视频| 欧美性69xxxx肥| 久久精品97| 久久久久久国产精品一区| 国产精品欧美一区喷水| 超碰公开在线| 国产亚洲欧美一区二区三区| 国产精品的网站| 亚洲成人av观看| 丝袜美腿玉足3d专区一区| 日韩欧美国产成人| 精品国产日韩欧美| 久久久精品久久| 国产一区二区伦理片| 岛国在线视频免费看| 91成人在线播放| 日本一区二区三区久久久久久久久不| 福利在线导航136| 久久99精品久久久久久水蜜桃| 亚洲色图一区二区| 欧美激情视频免费看| 日韩av不卡在线观看| 午夜在线视频播放| 国产白丝网站精品污在线入口| 豆花视频一区二区| 亚洲最新在线观看| 国产suv精品一区| 色乱码一区二区三区在线| 欧美三区在线视频| 激情久久五月| 国新精品乱码一区二区三区18| 91黄色激情网站| 精品电影在线| 欧美日韩一区成人| 日本xxxxxxxxxx75| 日韩大陆毛片av| 国产风韵犹存在线视精品| xxxxx.日韩| av漫画网站| 国产一区二区三区黄| 欧美精品一区在线观看| 亚洲无线看天堂av| 成人午夜视频免费观看| 久久久久久免费精品| 亚洲国产精品尤物yw在线观看| 国产欧美综合一区二区三区| 日韩片电影在线免费观看| 亚洲日本欧美中文幕| 欧美极品xxx| 亚洲男人影院| 国产精品欧美大片| 97超碰在线免费| 探花国产精品| 中文字幕一区二区三区精彩视频| 国语自产偷拍精品视频偷| 一本精品一区二区三区| 性欧美1819sex性高清| 黄色片免费在线| 日本一极黄色片| 六月婷婷激情网| 国产在线播放一区二区| 久久久影视精品| 日韩久久免费av| 午夜精品影院在线观看| 91香蕉视频在线| 免费久久99精品国产自在现线| 超碰97成人| 国产污视频在线播放| 岛国大片在线观看| 神马久久影视大全| 日韩精品一区中文字幕| 特级西西444| 日韩精彩视频| 神马欧美一区二区| 久久亚洲一区二区| 国产亚洲制服色| 老鸭窝一区二区久久精品| 国产精品7m凸凹视频分类| 欧美美乳视频| 青青草久久爱| 男人艹女人网站| 人妻少妇精品无码专区二区| 欧美日韩激情四射| 国产日韩第一页| 桥本有菜av在线| 精品一区二区三区无码视频| 亚洲视频在线视频| 亚洲人成在线观| 日韩在线观看成人| 九九综合九九综合| 国产精品免费视频一区| 午夜av电影一区| 欧美人与性动xxxx| 亚洲国产日韩一区| 另类视频在线观看| 久久久久久久久久久久av| 国产精品久久久久久久久久尿 | 国产精品免费视频观看| 一区二区成人在线视频| 69堂成人精品免费视频| 国产一级揄自揄精品视频| 国产69久久精品成人| 国产欧美一区二区三区另类精品| 日韩av一区二区三区在线观看| 国产午夜伦鲁鲁| 1769在线观看| 年轻的保姆91精品| 在线亚洲免费| 国产精品视频麻豆| 91精品国产色综合久久久蜜香臀| 久久久久免费视频| 亚洲巨乳在线观看| 成人a视频在线观看| 亚洲永久一区二区三区在线| 成人天堂入口网站| 亚洲国产成人不卡| 毛片网站大全| 欧美日韩亚洲国产| 先锋亚洲精品| 亚洲一区在线视频| 成人久久视频在线观看| 婷婷久久综合九色综合绿巨人| 日韩一中文字幕| 一区二区三区av| 国产一级在线| 成人午夜大片| 国产日韩欧美在线一区| 亚洲国产三级网| 精品亚洲欧美日韩| 毛片在线能看| 久久综合亚洲| 亚洲自拍偷拍图区| 精品国产乱码久久久久久蜜柚| 2001个疯子在线观看| 日韩一区电影| 久久国产精品高清一区二区三区|