<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      asp.net mvc 之旅—— 第一站 從簡單的razor入手

        記得2011年mvc3剛出來的時候,我們就有幸將 mvc3 用在我們團購項目上,當時老大讓我們用一個星期時間來熟悉mvc,幸好園子里面的老朋友DR

      正在mvc3列,也恭喜這個系列文章被整理成專題供后來者學習,詳見:http://www.rzrgm.cn/highend/archive/2011/08/04/aspnet_mvc3_

      contents.html,2013年進攜程的時候,也開心的看到公司正在將webform升級到mvc3,我們知道mvc在更新到3的時候相比之前已經有了重大的變革,

      其中就包括新增的razor模版引擎,家都知道razor語法簡單,容易入手,相比之前的aspx模板在語法簡易性上有了很大的提高,這篇就準備從razor入手。

       

      一:隨便看看幾個razor語法

      1. 你要會用 “單行和代碼塊語法輸出”

       1 <h1>
       2     第一種方式:</h1>
       3 <hr />
       4 @DateTime.Now.ToString()
       5 <h1>
       6     第二種方式:</h1>
       7 <hr />
       8 @{
       9     var @dt = DateTime.Now.ToString();
      10 }
      11 @dt

      2. 你要會用 “邏輯控制語句”

       1 @for (int i = 0; i < 10; i++)
       2 {
       3     <h1>@i</h1>
       4 }
       5 @if (DateTime.Now.Ticks / 2 == 0)
       6 {
       7 
       8 }
       9 else
      10 {
      11 
      12 }

      3. 你要會用 “內容標記塊語法”

         用text或者@: 來標記內容塊開始。

       1 // 第一種方式
       2 @if (true)
       3 { 
       4    @: 結束 @DateTime.Now.ToString()
       5 }
       6 <hr />
       7 
       8 
       9 //第二種方式
      10 @if (true)
      11 { 
      12    <text> 結束 @DateTime.Now.ToString() </text>
      13 }

       

      4.你要會用“將model從controller中傳遞到view”

       1. Controller代碼

       1     public class HomeController : Controller
       2     {
       3         public ActionResult Index()
       4         {
       5             var student = new Student() { Name = "ctrip", Age = 15 };
       6 
       7             return View(student);
       8         }
       9 
      10         public ActionResult About()
      11         {
      12             return View();
      13         }
      14     }

      2. View代碼

      1 @model MvcApplication1.Models.Student
      2 
      3 
      4 <h1>姓名: @Model.Name</h1>
      5 
      6 <h1>年齡: @Model.Age</h1>

        

         好了,如果你知道上面四點的話,恭喜你,razor這輛車你基本上算是會開了。。。但是會開車不見得就懂車,下面我們來看看razor到底是什么???

       

      二:剖析Razor

         我們知道C#是托管語言,既然是托管語言,那就需要將C#的代碼編譯成IL語言并封裝到DLL中。。。對吧,同樣的道理,Razor編譯后也會生成

      DLL。。。那下面一個問題來了,DLL在哪里?會是什么樣的組織形式???

      1. DLL在哪里?

        首先我們把實例代碼跑起來,如下圖:

       

      然后查看Index.cshtml頁面生成的臨時文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

           看到了沒有,pdb已經見紅了,這個所謂的App_Web_xxxx.dll 就是我們View生成的臨時dll,下一步我們用ILSpy看看這個dll里面到底

      有什么???

      從上面的圖中,我們大概看到如下幾點:

      第一:我們的Index.cshtml 對編譯器來說僅僅是一個類(__Page_Views_Home_Index_cshtml)而已。。。毫無神秘之感。。。

      第二:我們的Html標簽,例如h1的展示,對編譯器來說僅僅是調用WriteLiteral方法而已。。。

      第三:我們的類是繼承于WebViewPage<Student>,你要是夠細心,你會發現這里的T(Student)正是我往View中塞的student實體。

       

      三:深入追究

      1. WebViewPage<TModel>類

        既然WebViewPage是基類,那下一個問題就比較好奇了,因為我們知道子類可以繼承父類所有public的方法,對吧,那下一步我們就看

      看這個類中有哪些方法?

      從上圖中是不是看到了兩個有趣的屬性,Html和Model。

      1. Html

        首先我們知道它就是HtmlHelper類型,通常我們在Mvc中寫html標簽的方法有兩種,第一種方法就是原生的html標簽,還有一種那就是WebViewPage

      提供的各種htmlhelper,是不是很有意思???

        

      2. Model

         還記得我們在寫View的時候,使用@Model.Name展示姓名,用@Model.Age來展示年齡,那這個Model就是WebViewPage定義的屬性,對吧,

      下面我們繼續用ILSpy看看@Model是如何取值的!!!

       

      從上圖中我們可以看到取的原來是ViewData.Model。。。然后我們看看Controller中的View(object obj)中的obj是最后給誰傳值的。。。

      1         public ActionResult Index()
      2         {
      3             var student = new Student() { Name = "ctrip", Age = 15 };
      4 
      5             return View(student);
      6         }

      通過上面的圖,現在我們終于知道了。。。原來View(xxx)最終還是給 ViewData.Model賦值的。。。換句話說我可以在Action中直接給ViewData.Mode

      l賦值不是一樣的么???說干就干。

      1         public ActionResult Index()
      2         {
      3             var student = new Student() { Name = "ctrip", Age = 15 };
      4 
      5             ViewData.Model = student;
      6 
      7             return View();
      8         }

      原來我拉出來寫是一樣的效果。。。好了,其實父類還有很多,每個類中我相信你都會找到很多熟悉的屬性和方法,就比如:WebPageBase類中的

      Layout,Page,RenderBody等等。。。更好細節,期待你去發現。

       

      posted @ 2015-03-13 13:26  一線碼農  閱讀(17502)  評論(43)    收藏  舉報
      主站蜘蛛池模板: 国产精品麻豆欧美日韩ww| 亚洲中文字幕无码中字| 丝袜老师办公室里做好紧好爽| 亚洲精品麻豆一二三区| 亚洲大老师中文字幕久热| 在线高清理伦片a| 无码日韩做暖暖大全免费不卡| 视频一区二区不中文字幕| 国产精品av中文字幕| 加勒比无码av中文字幕| 天天摸天天做天天爽水多| 久久综合伊人| 国产成人精彩在线视频| 成人无码午夜在线观看| 亚洲另类激情专区小说婷婷久| 国产成人高清在线观看视频| 少妇人妻真实偷人精品| 国模少妇无码一区二区三区| 亚洲av永久无码一区二区三区| 东京热一精品无码av| 视频一区二区三区在线视频| 中文国产人精品久久蜜桃| 精品国产中文字幕在线| 成人h动漫精品一区二区无码| 日韩欧美国产aⅴ另类| 日本亚洲一区二区精品| 赤壁市| 国产精品亚洲а∨天堂2021| 久久亚洲中文字幕伊人久久大| 国产精品自拍中文字幕| 国产精品小一区二区三区| 国产精品SM捆绑调教视频| 国产精品色内内在线播放| 无码三级av电影在线观看| 亚洲伊人久久综合成人| 精品精品亚洲高清a毛片| 欧美成人h精品网站| 国产360激情盗摄全集| 久久国产成人高清精品亚洲| 国产乱码一区二区三区| 亚洲国产精品一区在线看|