1. 程式人生 > 程式設計 >ASP.net中Core自定義View查詢位置的例項程式碼

ASP.net中Core自定義View查詢位置的例項程式碼

.NET Core 的內容處處可見,刷爆全球各大社群,所以,老周相信各位大夥伴已經看得不少了,故而,老周不考慮一個個知識點地去寫,那樣會成為年度最大的屁話,何況官方文件也很詳盡。老周主要扯一下大夥伴們在入門的時候可能會疑惑的內容。

ASP.NET Core 可以在一個專案中混合使用 Web Pages 和 MVC ,這是老周最希望的,因為這樣會變得更靈活。Web Pages 類似於我們過去的 Web 開發方式,以頁面為單位,此模型側重於功能劃分。而 MVC 側重於資料,有什麼樣的資料模型就有什麼樣的 Controller,有什麼樣的 Controller 就會對應什麼樣的 Action ,而 Action 又會有對應的 UI,即 View。所以說 MVC 是以資料為核心的。

PopulateValues():作為一種指定引數的方式存在,您的檢視查詢將根據每個請求而變化.由於您沒有填充它,檢視引擎使用先前請求中的快取值.

public class ThemeViewLocationExpander : IViewLocationExpander
  {
    public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context,IEnumerable<string> viewLocations)
    {
      string theme = context.Values["theme"];
      if (string.IsNullOrWhiteSpace(theme))
      {
        theme = "default";
      }
      string[] newLocation = { $"Views/{theme}/{{1}}/{{0}}.cshtml"};
      return viewLocations.Union(newLocation);
    }

    public void PopulateValues(ViewLocationExpanderContext context)
    {
      context.Values["theme"] = context.ActionContext.HttpContext.Request.Query["theme"].ToString();
    }
  }
//配置模版檢視路徑
      services.Configure<RazorViewEngineOptions>(options =>
      {
        options.ViewLocationExpanders.Add(new ThemeViewLocationExpander());
      });

到此這篇關於ASP.net中Core自定義View查詢位置的例項程式碼的文章就介紹到這了,更多相關Core自定義View查詢位置內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!