MVC4 razor與aspx的區別以及用法1,2
Model要重,Controller要輕,View要夠笨,mvc不希望在開發view時還需要判斷過多的與view無關的技術,所以要儘可能的保持view邏輯簡單。(以下中有出現程式碼的地方用了什麼尖括號百分號標籤這些字樣是為了防止儲存時被新浪部落格給處理掉)
如果view選擇aspx字尾的話
頁面上都會出現很多夾雜後臺程式碼與html的情況,而先前使用的“<尖括號%百分號%尖括號>”這種古老表示法會讓html標籤與.net程式碼區塊混雜在一起,這樣當頁面變的複雜時,混合類程式碼的可讀性就大大降低。
在mvc3之後view就引入了Razor語法,用俗稱的小老鼠“@”符號來代表程式碼片段,搭配vs的語法高亮顯示,razor語法也讓整個view頁面內的html標籤與伺服器程式碼結合的相當漂亮。
在mvc2.5當中如果要在頁面上顯示當前時間:
<尖括號%: DateTime.Now%百分號>
若使用razor語法,則是
@DateTime.Now
Razor並不是一個程式碼語言,只是一種用在view頁面的程式碼區塊撰寫風格。
如果是c#來編寫razor頁面,字尾是cshtml
如果是vb.net來編寫,字尾則是vbhtml
1,Razor基本語法
在頁面上輸出單一變數時,只要在c#語句前加上@符號
eg :
<標籤>
現在時間:@DateTime.Now
</標籤>
注意:在輸出單一變數時不需要加上分號結尾,但是如果再頁面中輸出一段空白子元或者運運算元的結果時,則需要在前後加上一個小括號
eg:
<標籤>
會員名稱:@(user.Identity.Name+Model.MemberLevel)
狀態:@(ViewBag.IsEnabled?"啟用":“停用”)
</標籤>
在頁面上執行多行程式碼時,必須在前後加上一個大括號
eg
@
{
var a=1;
var b="aaa";
}
注意:@{}之間屬於一個c#程式碼區段,在撰寫程式碼時必須符合c#語言規範,也就是必須分號結尾。
如果要在多行後臺程式碼的razor語法中插入html或者其他內容,必須在每一行最前面加上一個"@:"符號,在這個符號的這行程式碼裡,也可以再加上其他razor變數
eg:
@
{
var name="aa";
@:您好, 我是@name
}
razar檢視頁面中表示註釋,用“@*”與“*@”來當註釋頭尾,就不寫範例了。
如果要在razor頁面輸出“@”符號,可以用@符號作為跳脫子元,比如@@aaa,輸出@aaa
2,razor與html混合輸出
if語句範例
@if(ViewBag.IsEnabled){
@:啟用
}else{
@:停用
}
如果再if與else程式碼區塊裡放置大量的html標籤,每行前面都要加"@:"有點麻煩,只要在程式碼區塊的前後加上一組html標籤就可以,(純文字在razor的程式碼裡會自動被視為c#語句,所以必須加標籤)
@if(ViewBag.IsEnabled){
<標籤>啟用</標籤>
}else{
<標籤>停用</標籤>
}
vs工具中的高亮提示,razor中c#程式碼是顯示淡藍色,如果是白底色的話就代表是razor意外的純文字,razor會很智慧的自動辨別是c#還是html,但是如果我們不想在這個區段出現任何的標籤怎麼辦呢,在razor中使用特殊的<標籤text>來代替這個html標籤,最後輸出到瀏覽器時就不會出現text標籤,當然也可以在多行c#程式碼區段使用"@:" 或者text作為HTML與razor語法之間的切換
相關文章
- 【Java註解用法】@Autowired 與@Resource的區別以及@Qualifier的介紹Java
- 詳解not in與not exists的區別與用法
- 【JAVA】Class.forName用法以及和new的區別Java
- js中!和!!的區別與用法JS
- oracle中merge的用法,以及各版本的區別 CreateOracle
- ajax與jsonp的區別及用法JSON
- thchnique 與 technology的區別及用法
- 指標 與 陣列 以及 a 與 &a的區別指標陣列
- Gerrit的用法及與gitlab的區別Gitlab
- SSL與TLS的區別以及介紹TLS
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- CSS中的class與id區別及用法CSS
- exists和not exists及in和not in的用法與區別
- $.ajax 與 $.post 的區別,以及$.post的bug
- ARRAYLIST VECTOR LINKEDLIST 區別與用法
- 「乾貨」細說 call、apply 以及 bind 的區別和用法APP
- 棧與堆的區別以及增長方向
- async與defer的作用與區別以及阻塞優化優化
- JavaScript中apply、call、bind的區別與用法JavaScriptAPP
- vi與vim的區別以及常用命令
- vi與vim的區別以及常用命令***
- innodb的redo log以及與binary log的區別
- Flutter Dart語法(1):extends 、 implements 、 with的用法與區別FlutterDart
- 區別木馬與病毒,以及識別與防治木馬的方法
- EXISTS、IN、NOT EXISTS、NOT IN用法區別
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- JS中的!=、== 、!==、=== 的用法和區別JS
- JS中的!=、== 、!==、===的用法和區別。JS
- [php]require&require_once&include&include_once的用法與區別PHPUI
- EXTJs 中icon 與iconCls的區別及用法!JS
- insert into select 與 create table as的用法和區別(轉)
- 請問: 在Struts中 ActionFrom vs DynaActionForm 的區別與用法?ORM
- .NET裡面 abstract class和Interface有什麼區別以及用法的展現?
- nvl、nvl2與nullif函式用法區別Null函式
- MongoDB、Redis 以及 Memcache 的區別MongoDBRedis
- 五分鐘看懂Hashtable原始碼以及與HashMap的區別原始碼HashMap
- 【JavaScript】深入理解call,以及與apply、bind的區別JavaScriptAPP
- Linux中程式與執行緒的概念以及區別Linux執行緒