1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      ASP.NETMVC視圖(一)-創(chuàng)新互聯(lián)

      ASP.NET MVC 視圖(一)

      創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的豐澤網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

      前言

      從本篇開始就進(jìn)入到了MVC中的視圖部分,在前面的一些篇幅中或多或少的對視圖和視圖中的一些對象的運用進(jìn)行了描述,不過畢竟不是視圖篇幅說的不全面,本篇首先為大家講解一下自定義視圖引擎的定義和使用,由此慢慢的來了解視圖引擎以及視圖模塊的工作過程。

      ASP.NETMVC 視圖

      自定義視圖引擎簡易示例

      Razor視圖引擎執(zhí)行過程

      Razor視圖的依賴注入、自定義視圖輔助器

      分段、分部視圖的使用

      Razor語法、視圖輔助器

      自定義視圖引擎

      在講解自定義視圖引擎之前,我們先來了解一下其中涉及到的一些對象類型。

      首先來看IViewEngine接口類型的定義:

      代碼1-1

      public interface IViewEngine
          {
              ViewEngineResultFindPartialView(ControllerContextcontrollerContext, string partialViewName, bool useCache);
              ViewEngineResultFindView(ControllerContextcontrollerContext, string viewName, string masterName, booluseCache);
              voidReleaseView(ControllerContextcontrollerContext, IView view);
          }

      在代碼1-1中我們可以看到IViewEngine接口類型中定義了三個方法,第一個FindPartialView()方法中第一個參數(shù)是控制器上下文類型,里面包含著ViewData、ViewBag一些信息等,第二個字符串類型的參數(shù)表示為分部視圖的名稱,第三個參數(shù)是布爾值類型的參數(shù)表示是否緩存當(dāng)前信息。

      FindView()方法和FindPartialView()方法相似,只是多了一個viewName參數(shù),表示視圖名稱。

      這里實際的實現(xiàn)都是根據(jù)不同的視圖引擎類型在這兩個方法中返回對應(yīng)視圖引擎類型的IView【視圖處理類型】,這個部分內(nèi)容會在一下個篇幅中講解到。

      ReleaseView()方法則是用來釋放IView中處理視圖的資源。

      ViewEngineResult類型是封裝著IViewEngine類型和IView類型的一個操作返回類型,上面的兩個方法的返回類型都是ViewEngineResult類型。

      代碼1-2

      public class ViewEngineResult
      {
              publicViewEngineResult(IEnumerable searchedLocations);
              publicViewEngineResult(IView view, IViewEngine viewEngine);
       
              public IEnumerableSearchedLocations { get; }
              public IView View { get;}
              public IViewEngine ViewEngine { get;}
          }

      在代碼1-2中我們可以看到ViewEngineResult類型的兩個構(gòu)造函數(shù),第一個可枚舉字符串類型表示的是搜索視圖位置地址的這么一個集合,第二個不用說了就是對象封裝了。

      我們再來看一下IView的定義:

      代碼1-3

      public interface IView
          {
              // 摘要:
              //     使用指定的編寫器對象來呈現(xiàn)指定的視圖上下文。
              //
              // 參數(shù):
              //   viewContext:
              //     視圖上下文。
              //
              //   writer:
              //     編寫器對象。
              voidRender(ViewContext viewContext, TextWriter writer);
          }

      IView類型的在我的理解就是視圖處理類型,它只是代表著一種類型的視圖,比如說Razor視圖是cshtml格式的文件,對應(yīng)的IView就是RazorView這個處理類型,這個下篇會講到。

      先來看一下下面所要講解的示例的示意圖:

      圖1

      ASP.NET MVC 視圖(一)

      大概流程是這樣的,首先在我們控制器方法返回ViewResult的時候,ViewResult會從系統(tǒng)的IViewEngine集合中中讀取IViewEngine,并且執(zhí)行每個IViewEngine的FindView【假使是視圖】,執(zhí)行中某一個IViewEngine有返回ViewEngineResult類型的話則會停下向下執(zhí)行,而是執(zhí)行ViewEngineResult類型中的IView的Render()方法。最后視圖的呈現(xiàn)則不是MVC部分負(fù)責(zé)的了下一篇中會講解。現(xiàn)在我們來看一下示例。

      首先是自定義的IViewEngine:

      代碼1-4

      using System.Web.Mvc;
      using MvcApplication.CustomView;
       
      namespace MvcApplication.CustomViewEngine
      {
          public class MyCustomViewEngine: IViewEngine
          {
       
              public ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, booluseCache)
              {
                  returnnew ViewEngineResult(new string[] { "MyCustomView " });
              }
       
              public ViewEngineResult FindView(ControllerContextcontrollerContext, string viewName, string masterName, booluseCache)
              {
                  if(viewName == "MyCustomView")
                  {
                      returnnew ViewEngineResult(new MyCustomView(),this);
                  }
                  else
                  {
                      returnnew ViewEngineResult(new string[] { "MyCustomView " });
                  }
       
              }
       
              public void ReleaseView(ControllerContextcontrollerContext, IView view)
              {
       
              }
          }
      }

      這里只是在FindView()方法中實現(xiàn)了一個基礎(chǔ)的代碼,如果是視圖名稱為"MyCustomView",則會返回MyCustomView類型的視圖處理類型作為ViewEngineResult類型的構(gòu)造函數(shù)參數(shù)來返回。

      自定義的IView:

      代碼1-5

      using System.Web.Mvc;
       
      namespace MvcApplication.CustomView
      {
          public class MyCustomView:IView
          {
              public void Render(ViewContextviewContext, System.IO.TextWriter writer)
              {
                  foreach(string key inviewContext.ViewData.Keys)
                  {
                      writer.Write("Key:" + key + ",Value:"+ viewContext.ViewData[key] + ".

      ");             }         }     } }

      代碼1-5中的定義則是簡單的向writer中寫入ViewData的值,并且最后呈現(xiàn)在視圖頁面上。

      最后我們要把自定義的視圖引擎添加到系統(tǒng)的視圖引擎集合中,在Global.asax文件的Application_Start()方法中。

      代碼1-6

      ViewEngines.Engines.Insert(0, newCustomViewEngine.MyCustomViewEngine());

      這種添加的方式不多說了,前面篇幅對于這種模式的已經(jīng)說過了,讓自定義的排在集合的第一位而已。

      最后隨意的在某個控制器方法中代碼修改為如下代碼:

      代碼1-7

      public ActionResultCustomView()
              {
                  this.ViewData.Add("DebugData", "Jinyuan");
                  this.ViewData.Add("DebugDate", "2014-01-01");         
                  returnView("MyCustomView");
              }

      圖2

      ASP.NET MVC 視圖(一)

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      網(wǎng)頁名稱:ASP.NETMVC視圖(一)-創(chuàng)新互聯(lián)
      瀏覽路徑:http://www.ef60e0e.cn/article/ddpcdd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        东明县| 斗六市| 新乡市| 建德市| 葵青区| 台山市| 崇仁县| 仙居县| 清丰县| 信阳市| 白山市| 葫芦岛市| 慈溪市| 无为县| 清苑县| 社旗县| 永福县| 万荣县| 胶州市| 浮梁县| 牙克石市| 封开县| 封丘县| 栾川县| 安塞县| 三河市| 工布江达县| 大港区| 西贡区| 阿瓦提县| 大城县| 洪洞县| 孟村| 阿拉善右旗| 永春县| 郁南县| 温州市| 海伦市| 赞皇县| 康保县| 逊克县|