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

解讀ASP.NET 5 & MVC6系列(16):自定義View視圖文件查找邏輯

移動開發(fā) Android
之前MVC5和之前的版本中,我們要想對View文件的路徑進行控制的話,則必須要對IViewEngine接口的FindPartialView或FindView方法進行重寫,所有的視圖引擎都繼承于該IViewEngine接口,比如默認的RazorViewEngine。

之前MVC5和之前的版本中,我們要想對View文件的路徑進行控制的話,則必須要對IViewEngine接口的FindPartialView或FindView方法進行重寫,所有的視圖引擎都繼承于該IViewEngine接口,比如默認的RazorViewEngine。但新版本MVC6中,對視圖文件的路徑方式卻不太一樣了,目前有兩種方式,一種是通過RazorViewEngine,另外一種是通過新特性IViewLocationExpander接口。
通過RazorViewEngine來控制View路徑

在新版的RazorViewEngine中,該類提供了兩個虛屬性(AreaViewLocationFormats和ViewLocationFormats),可以用于重寫控制,而不必再對FindPartialView或FindView方法進行重寫,示例如下:

 

  1. public class ThemeViewEngine : RazorViewEngine 
  2. public ThemeViewEngine(IRazorPageFactory pageFactory, 
  3. IRazorViewFactory viewFactory, 
  4. IViewLocationExpanderProvider viewLocationExpanderProvider, 
  5. IViewLocationCache viewLocationCache) 
  6. : base(pageFactory, 
  7. viewFactory, 
  8. viewLocationExpanderProvider, 
  9. viewLocationCache) 
  10.  
  11. public override IEnumerable<string> AreaViewLocationFormats 
  12. get 
  13. var value = new Random().Next(01); 
  14. var theme = value == 0 ? "Theme1" : "Theme2"// 可通過其它條件,設置皮膚的種類 
  15. return base.AreaViewLocationFormats.Select(f => f.Replace("/Views/""/Views/" + theme + "/")); 
  16.  
  17. public override IEnumerable<string> ViewLocationFormats 
  18. get 


var value = new Random().Next(0, 1);
var theme = value == 0 ? "Theme1" : "Theme2"; // 可通過其它條件,設置皮膚的種類
return base.ViewLocationFormats.Select(f => f.Replace("/Views/", "/Views/" + theme + "/"));

  1.  
  2. 然后,通過修改MVcOptions的實例屬性ViewEngines即可完成對視圖引擎的替換,代碼如下: 
  3.  
  4. services.AddMvc().Configure<MvcOptions>(options => 
  5. options.ViewEngines.Clear(); 
  6. options.ViewEngines.Add(typeof(ThemeViewEngine)); 
  7. }); 

 

這樣,系統(tǒng)在查找視圖文件的時候,就會按照新注冊的ThemeViewEngine的邏輯來執(zhí)行。
通過IViewLocationExpander來控制View路徑

在MVC6中,微軟還提供了另外一種新的方式來控制View文件的路徑,那就是IViewLocationExpander接口,通過實現(xiàn)該接口即可實現(xiàn)自定義邏輯,并且也可以使用相關的上下文對象。示例如下:

 

  1. public class ThemeViewLocationExpander : IViewLocationExpander 
  2. public void PopulateValues(ViewLocationExpanderContext context) 
  3. var value = new Random().Next(01); 
  4. var theme = value == 0 ? "Theme1" : "Theme2"
  5. context.Values["theme"] = theme; 
  6.  
  7. public virtual IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, 
  8. IEnumerable<string> viewLocations) 
  9. return viewLocations.Select(f => f.Replace("/Views/""/Views/" + context.Values["theme"] + "/")); 

在上述自定義的IViewLocationExpander中,實現(xiàn)了2個方法分別是PopulateValues和ExpandViewLocations,PopulateValues方法可以讓我們想ViewLocationExpanderContext上下文中添加響應的鍵值對以便后續(xù)使用,通過,我們可以利用通過該上下文對象,來查找ActionContext和HttpContext對象,以便利用這些對象做響應的判斷操作;而ExpandViewLocations方法,只會在沒有View緩存或在View緩存里找不到對應key的View文件時才會調用該方法,在該方法內,我們可以動態(tài)返回視圖的位置。

***,我們在Startup.cs里通過修改RazorViewEngineOptions實例對象的ViewLocationExpanders屬性,來實現(xiàn)注冊目的,代碼如下:

  1. services.Configure<RazorViewEngineOptions>(options => 
  2. options.ViewLocationExpanders.Add(typeof(ThemViewLocationExpander)); 
  3. }); 

 

責任編輯:chenqingxiang 來源: 湯姆大叔的博客
相關推薦

2015-06-18 16:39:17

ASP.NET

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 17:01:48

ASP.NET

2015-06-17 16:04:36

ASP.NET

2015-06-17 10:16:30

ASP.NET

2015-06-18 17:37:19

ASP.NET

2015-06-17 14:16:50

ASP.NET

2015-06-17 14:09:36

ASP.NET

2015-06-17 14:18:50

ASP.NET

2015-06-18 14:25:56

ASP.NET

2009-11-24 15:11:21

ASP.NET MVC

2009-07-22 15:27:39

ASP.NET MVC自定義路由

2010-04-30 09:32:49

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

2021狠狠干| 97se亚洲国产综合自在线观| 情趣网站视频在线观看| 97超碰蝌蚪网人人做人人爽| 亚洲国产成人一区二区三区| 久久99偷拍| 白虎精品一区| 蜜桃导航-精品导航| 亚洲女人天堂成人av在线| 亚洲人成网站色在线观看| 国产精品三级| 岛国在线视频免费看| 欧美一区二区高清在线观看| 日韩写真欧美这视频| 久久国产福利国产秒拍| 美女18一级毛片一品久道久久综合| 韩国三级av在线免费观看| 国产日韩精品电影| 欧美一卡二卡三卡四卡| 国产成人午夜片在线观看高清观看| 亚洲一区二区小说| 视频福利在线| 黄色一级片网址| 97超碰国产精品女人人人爽| 色诱亚洲精品久久久久久| 青草国产精品久久久久久| 无人区在线高清完整免费版 一区二 | 国产日韩精品一区二区三区在线| 日韩成人精品| 男人av在线| 超碰网在线观看| 亚洲春色综合另类校园电影| 国产精品第8页| 这里只有精品视频| 欧美一区二区精美| 欧美午夜精品久久久久久久| 国产欧美精品久久| 欧美三级一区| 超碰在线无需免费| 国模吧无码一区二区三区| 亚洲免费中文字幕| 中文字幕不卡的av| 中日韩男男gay无套| 国产精品日韩精品中文字幕| av免费在线一区二区三区| 麻豆精品传媒视频| 色噜噜狠狠色综合网图区| 亚洲激情视频在线播放| 日韩区欧美区| 日本福利在线观看| 日韩中文字幕组| 国产视频精品自拍| 精品久久久久久国产91| 97久久超碰国产精品电影| 久久亚洲国产精品一区二区| 日韩欧美三级| 亚洲精品国产setv| 亚洲精品一区二区三区在线| 日本欧美韩国| 人人在线97| 久久99精品久久久久久青青91| 欧美在线免费看视频| 爱福利视频一区二区| 国产精品国产福利国产秒拍| 欧美性生活影院| 亚洲欧美日本国产专区一区| aa级大片免费在线观看| 日韩中文在线字幕| www.久久久久| 综合在线观看色| 在线亚洲成人| 日韩亚洲国产免费| 欧美香蕉爽爽人人爽| 欧美一级片免费观看| 欧美高清视频在线观看| 欧美日韩久久久| 99久久99久久精品免费观看| 欧美性生活一级片| √天堂资源地址在线官网| 日韩video| 成人激情视频在线| 久久久久久久久国产| 国产欧美日韩另类一区| 69xxxx欧美| 9l视频自拍9l视频自拍| eeuss影院95999部| 日韩激情在线观看| 高清电影在线观看免费| 四虎免费在线观看视频| 日韩成人精品在线观看| 自拍亚洲图区| 超碰97在线看| 欧美日韩国产成人高清视频| ㊣最新国产の精品bt伙计久久| 日韩动漫一区| 免费理论片在线观看播放老| 国产精品美女诱惑| 亚洲精品中文字幕av| 91免费观看视频在线| 西瓜成人精品人成网站| 国产高清自拍视频在线观看| 亚洲欧美日韩精品在线| 欧美另类第一页| 欧美日韩国产精品| 奇米一区二区三区| 一区二区三区在线免费看 | 中文字幕高清在线观看| 国产在线一区二区三区四区| 日韩精品一区二区三区三区免费| 懂色av一区二区夜夜嗨| 国产欧美日韩视频在线| 天堂8中文在线| 999在线免费视频| 成人三级在线| 中文字幕亚洲在线| 精品高清美女精品国产区| 麻豆国产精品777777在线| 狼人精品一区二区三区在线| av网站无病毒在线| 2022亚洲天堂| 国产91一区二区三区| 日韩中文字幕在线视频| 精品美女国产在线| 国产精品一区二区不卡| 日韩国产在线| 日韩电影免费观看高清完整版| 小香蕉视频在线| 妞干网在线播放| 成人激情春色网| 一区二区在线视频| 日本高清无吗v一区| 26uuu久久天堂性欧美| 亚洲黄色一区| 国内露脸中年夫妇交换精品| 成人黄色在线电影| 深夜宅男网站免费进入| 法国空姐在线观看免费| 国产在线久久久| 久久中文字幕国产| 日韩一区二区精品葵司在线| 中文无字幕一区二区三区| 免费黄网站在线播放| www黄色日本| 欧美日韩最好看的视频| 国产精品户外野外| 精品国产欧美成人夜夜嗨| 欧美日韩高清影院| 中文字幕一区在线| 国产成人精品在线看| 欧美视频四区| 九九热播视频在线精品6| ****av在线网毛片| 国产一级网站视频在线| gogo高清免费视频| 成人性免费视频| 日本亚洲导航| 亚洲在线视频福利| 欧亚精品中文字幕| 久久综合久久八八| 亚洲精品在线91| 欧美一区二区女人| 欧美日韩综合视频| 亚洲日本电影在线| 91麻豆swag| 国产精品亚洲视频| 奇米精品一区二区三区在线观看| 欧美oldwomenvideos| 红杏aⅴ成人免费视频| 韩国美女久久| 超碰中文在线| 麻豆91在线| 国产小视频在线播放| 免费观看又污又黄在线观看国产| 一路向西2在线观看| www国产精品内射老熟女| 一区二区三区四区视频在线 | 欧美不卡1区2区3区| 91久久嫩草影院一区二区| 欧美中文在线观看| 欧美国产中文字幕| 中文字幕日韩av| 亚洲人精品午夜在线观看| 亚洲精品www| 精品久久久久香蕉网| 欧美日本免费一区二区三区| 色综合夜色一区| 午夜久久久影院| 一区二区在线观看免费 | 色是在线视频| 18+激情视频在线| av网址在线免费观看| 快射视频在线观看| 黄色在线视频网站| 黄色精品在线观看| av毛片在线免费看| 牛牛精品在线| 无码小电影在线观看网站免费| 日本不卡网站| 干日本少妇视频| 中文字幕综合在线观看|