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

解讀ASP.NET 5 & MVC6系列(14):View Component

移動開發(fā) Android
在之前的MVC中,我們經(jīng)常需要類似一種小部件的功能,通常我們都是使用Partial View來實現(xiàn),因為MVC中沒有類似Web Forms中的WebControl的功能。但在MVC6中,這一功能得到了極大的改善。新版MVC6中,提供了一種叫做View Component的功能。

 在之前的MVC中,我們經(jīng)常需要類似一種小部件的功能,通常我們都是使用Partial View來實現(xiàn),因為MVC中沒有類似Web Forms中的WebControl的功能。但在MVC6中,這一功能得到了極大的改善。新版MVC6中,提供了一種叫做View Component的功能。

你可以將View Component看做是一個mini的Controller——它只負責(zé)渲染一小部分內(nèi)容,而非全部響應(yīng),所有Partial View能解決的問題,你都可以使用View Component來解決,比如:動態(tài)導(dǎo)航菜單、Tag標簽、登錄窗口、購物車、最近閱讀文章等等。

View Component包含2個部分,一部分是類(繼承于ViewComponent),另外一個是Razor視圖(和普通的View視圖一樣)。就像新版MVC中的Controller一樣,ViewComponent也可以使POCO的(即不繼承ViewComponent類,但類名以ViewComponent結(jié)尾)。

View Component的創(chuàng)建

目前,View Component類的創(chuàng)建方式有如下三種:

直接繼承于ViewComponent

給類加上ViewComponent特性,或繼承于帶有ViewComponent特性的類

創(chuàng)建一個類,類名以ViewComponent結(jié)尾

和Controller一樣,View Component必須是public的,不能嵌套,不能是抽象類。舉例來說,我們創(chuàng)建一個View Component,類名為TopListViewComponent,代碼如下:

 

  1. public class TopListViewComponent : ViewComponent 
  2.     private readonly ApplicationDbContext db; 
  3.  
  4.     public TopListViewComponent(ApplicationDbContext context) 
  5.     { 
  6.         db = context; 
  7.     } 
  8.  
  9.     public IViewComponentResult Invoke(int categoryId, int topN) 
  10.     { 
  11.         List col = new List();         var items = db.TodoItems.Where(x => x.IsDone == false &&                                             x.categoryId == categoryId).Take(topN);          return View(items);     } } 
  12.  
  13.   

上述類,也可以定義成如下這樣:

  1. [ViewComponent(Name = "TopList")] 
  2. public class TopWidget 
  3.     // 其它類似 
  4. }

通過在TopWidget類上定義一個名稱為TopList的ViewComponent特性,其效果和定義TopListViewComponent類一樣,系統(tǒng)在查找的時候,都會認可,并且在其構(gòu)造函數(shù)中通過依賴注入功能提示構(gòu)造函數(shù)中參數(shù)的類型實例。

Invoke方法是一個約定方法,可以傳入任意數(shù)量的參數(shù),系統(tǒng)也支持InvokeAsync方法實現(xiàn)異步功能。

View Component的視圖文件創(chuàng)建

以在ProductController的視圖里調(diào)用View Component為例,我們需要在Views\Product文件夾下創(chuàng)建一個名稱為Components的文件夾(該文件夾名稱必須為Components)。

然后在Views\Product\Components文件夾下創(chuàng)建一個名稱為TopList 的文件夾(該文件夾名稱必須和View Component名稱一致,即必須是TopList)。

在Views\Product\Components\TopList文件夾下,創(chuàng)建一個Default.cshtml視圖文件,并添加如下標記:

  1. @model IEnumerable<BookStore.Models.ProductItem> 
  2.  
  3. <h3>Top Products</h3> 
  4. <ul> 
  5.     @foreach (var todo in Model) 
  6.     { 
  7.         <li>@todo.Title</li> 
  8.     } 
  9. </ul> 

如果再View Component中,沒有指定視圖的名稱,將默認為Default.cshtml視圖。

至此,該View Component就創(chuàng)建好了,你可以在Views\Product\index.cshtml視圖中的任意位置調(diào)用該View Component,比如:

  1. <div class="col-md-4"> 
  2.   @Component.Invoke("TopList", 1, 10)   
  3. </div> 

 

如果在上述TopListViewComponent中定義的是異步方法InvokeAsync的話,則可以使用@await Component.InvokeAsync()方法來調(diào)用,這兩個方法的***個參數(shù)都是TopListViewComponent的名稱,剩余的參數(shù)則是在TopListViewComponent類中定義的方法參數(shù)。

注意:一般來說,View Component的視圖文件都是添加在Views\Shared文件夾的,因為一般來說ViewComponent不會特定于某個Controller。

使用自定義視圖文件

一般來說,如果要使用自定義文件,我們需要在Invoke的方法返回返回值的時候來指定視圖的名稱,示例如下:

  1. return View("TopN", items); 

那么,就需要創(chuàng)建一個Views\Product\Components\TopN.cshtml文件,而使用的時候則無需更改,還是指定原來的View Component名稱即可,比如:

  1. @await Component.InvokeAsync("TopList",  1, 10)  //以異步調(diào)用為例 

總結(jié)

一般來說,建議在通用的功能上使用View Component的功能,這樣所有的視圖文件都可以放在Views\Shared文件夾了。

責(zé)任編輯:chenqingxiang 來源: 湯姆大叔的博客
相關(guān)推薦

2015-06-18 16:29:14

ASP.NET

2015-06-17 14:42:04

ASP.NET

2015-06-29 10:00:02

ASP.NETMVC6

2015-06-18 17:04:22

ASP.NET

2015-06-18 14:13:36

ASP.NET

2015-06-17 16:45:28

ASP.NET

2015-06-16 15:01:59

ASP.NET 5

2015-06-17 16:01:30

ASP.NET

2015-06-17 16:04:36

ASP.NET

2015-06-17 17:01:48

ASP.NET

2015-06-17 10:16:30

ASP.NET

2015-06-18 17:37:19

ASP.NET

2015-06-18 17:34:25

ASP.NET

2015-06-17 14:09:36

ASP.NET

2015-06-17 14:16:50

ASP.NET

2015-06-17 14:18:50

ASP.NET

2015-06-18 14:25:56

ASP.NET

2014-08-26 09:22:40

ASP.NET MVCRouting

2015-06-30 14:58:20

技術(shù)周刊

2009-07-31 12:43:59

ASP.NET MVC
點贊
收藏

51CTO技術(shù)棧公眾號

精品少妇在线视频| 激情五月开心婷婷| 欧美五码在线| 亚洲人高潮女人毛茸茸| 尤物网在线观看| 黑人精品xxx一区| 91淫黄看大片| 久久色.com| 蜜臀精品一区二区| 高清不卡一二三区| 日本女人高潮视频| 精品午夜久久福利影院| 你懂的视频在线一区二区| 午夜精品视频一区二区三区在线看| 欧美一区二区三区精品电影| 激情小说一区| 欧美高清在线观看| 国产一区二区三区免费在线| 视频在线观看99| 久久免费影院| 久久精彩免费视频| 2020国产精品小视频| 不卡中文字幕av| 亚洲国产精品免费视频| 国内伊人久久久久久网站视频| 免费观看成人www动漫视频| 欧美在线免费视频| 欧美色图在线播放| 丁香五月网久久综合| 欧美一级播放| 国产大尺度在线观看| 97久久精品人人爽人人爽蜜臀| 男女午夜激情视频| 中文字幕永久在线不卡| 五月天最新网址| 日本精品视频一区二区| 菠萝菠萝蜜在线视频免费观看| 337p日本欧洲亚洲大胆精品| 182在线播放| 久久九九国产精品怡红院| 亚洲天堂av资源在线观看| 98视频在线噜噜噜国产| 色婷婷热久久| 欧美精品国产精品久久久| 国产美女精品人人做人人爽| 久久久久狠狠高潮亚洲精品| 一区二区三区日韩欧美| 91社区在线观看播放| 日韩精品中文字幕久久臀| 精品入口麻豆88视频| 国产色婷婷国产综合在线理论片a| 最新成人av网站| 日韩精品久久一区二区| 亚洲人成网站色在线观看| 黄色在线小视频| 亚洲国产精品免费| 久久精品论坛| 国产精品区免费视频| 日韩精品一级二级| 国产精品大尺度| 黑人巨大精品欧美一区| 亚洲欧美日韩天堂| 在线欧美激情| 国产成人精品a视频一区www| 影音先锋日韩资源| 草草视频在线免费观看| 亚洲一区二区三区四区中文字幕| 色影视在线观看| 在线观看日韩av| 成人在线电影在线观看视频| 久久伊人资源站| 久久久欧美精品sm网站| 国产一级片在线| 精品国产依人香蕉在线精品| 日韩伦理一区| 无码人妻少妇伦在线电影| 亚洲国产精品久久久男人的天堂| 青青草原国产在线| 国产激情久久久| 国产精品正在播放| 成人18网址在线观看| 欧美一激情一区二区三区| 综合欧美亚洲| 亚洲精品一区二区三区樱花| 日本一区二区三区在线观看| 免费av网站在线观看| 97在线看福利| 国产乱色国产精品免费视频| 中文字幕不卡| 欧美日韩爱爱视频| 蜜桃av一区二区三区电影| 男女视频网站免费观看| 国产亚洲精品久久久久久牛牛 | 91丨porny丨中文| 国产原创av在线| 亚州国产精品久久久| 激情图片小说一区| 毛片网站在线| 欧洲中文字幕国产精品| 不卡的电视剧免费网站有什么| 高潮毛片在线观看| 亚洲一区亚洲二区| 亚洲视频一二三| 亚洲三级在线| 妺妺窝人体色www看人体| 日韩欧美激情在线| 欧美精品综合| 在线播放免费| 浅井舞香一区二区| 久久亚洲精品小早川怜子| 97se综合| 一区二区日本伦理| 91精品国产欧美一区二区成人| 日韩一区电影| 人猿泰山h版在线观看| 国色天香2019中文字幕在线观看| 99久久免费精品高清特色大片| 英国三级经典在线观看| 日韩电影免费观看高清完整| 欧美精品久久久久久久多人混战 | 日韩一级裸体免费视频| 精品一区二区日韩| www在线免费观看视频| 99re在线国产| 欧美色综合久久| 黄色欧美成人| 69久久精品| 欧美不卡1区2区3区| 欧美巨大另类极品videosbest| 欧美日韩国产探花| 99re在线视频| 欧美二区在线看| 亚洲成人网av| 国产一区二区三区四区五区入口| 日本不卡网站| 国产美女主播在线| 久久精品视频在线观看| 久久久精品免费观看| 国产毛片久久久| 国产一级大片| 国产欧美va欧美va香蕉在线| 午夜av区久久| 91成人精品| jizz在线观看| 日韩欧美亚洲区| 亚洲男人av电影| 26uuu亚洲| 国产毛片一区二区三区| 玖玖综合伊人| 一区二区视频在线观看| 久久精品国产免费观看| 亚洲欧美国产毛片在线| 伊人青青综合网| 直接在线观看的三级网址| 亚洲天堂av免费在线观看| 久久精品欧美视频| 一区二区三区精品久久久| 欧美女激情福利| 麻豆成全视频免费观看在线看| 丁香六月激情婷婷| 欧美一级片一区| 欧美午夜理伦三级在线观看| 国产精品资源在线| 欧美在线导航| 黄色在线视频观看网站| 欧美三级午夜理伦三级老人| 亚洲91精品在线观看| 欧美撒尿777hd撒尿| 国产99久久久国产精品潘金| 亚洲精品小区久久久久久| 中文字幕在线视频区| 99久re热视频精品98| 777777777亚洲妇女| 欧美亚洲一区二区在线观看| 成人污视频在线观看| 欧美电影免费| 日韩精品专区| 在线观看视频网站你懂得| 蜜臀av.com| 国产精品亚洲第一区| 国产视频久久久| 一二三四社区欧美黄| 奇米影视一区二区三区| 美日韩黄色大片| 久久av色综合| 交视频在线观看国产| 日本不卡一区二区三区在线观看| 久久久免费高清电视剧观看| 91精品国产福利在线观看| 国产精品麻豆久久久| 毛片av一区二区三区| 日韩欧美二区| 在线高清欧美| 先锋成人av| 男男做性免费视频网| 日本特级黄色大片| 欧美在线视频一区| 尤物99国产成人精品视频| 欧美日韩国产综合一区二区三区| 国产精品久久久久影视|