本章主要和大家分享下如何在ASP.NET Core MVC Action中判斷某個視圖是否存在 ...
在開發Web網站過程中可能會遇到需要添加許多宣傳頁,這些宣傳頁往往不需要什麼後端邏輯代碼,這時候我們就不希望為每一個宣傳頁都添加一個Action,
而是希望只添加一個Action,然後結合路由動態的指向不同的視圖。而動態的指向不同的視圖這時候可能就需要用到判斷某個視圖是否存在,不存在執行某個邏輯。
下麵我們來看下Demo:
首先來看下Demo的項目結構
接下來看下核心代碼
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.ViewEngines; namespace IsExistsViewDemo.Controllers { /// <summary> /// 靜態宣傳頁 /// </summary> public class DHtmlController : Controller { #region 欄位和屬性 /// <summary> /// 混合視圖引擎 /// </summary> private readonly ICompositeViewEngine _compositeViewEngine; #endregion 欄位和屬性 #region 構造函數 /// <summary> /// 構造函數 /// </summary> public DHtmlController(ICompositeViewEngine compositeViewEngine) { _compositeViewEngine = compositeViewEngine; } #endregion 構造函數 #region 宣傳頁 /// <summary> /// 宣傳頁 /// </summary> /// <param name="viewname"> /// 視圖名稱 /// </param> /// <returns> /// </returns> [Route("dhtml/{viewname}/")] public IActionResult Index(string viewname) { var view = _compositeViewEngine.FindView(ControllerContext, viewname, false)?.View; if (view == null) //判斷指定的視圖文件是否存在 { // TODO return View("NotFound"); } return View(viewname); } #endregion 宣傳頁 #region 直通車宣傳頁 /// <summary> /// 直通車宣傳頁 /// </summary> /// <param name="viewname"> /// 視圖名稱 /// </param> /// <returns> /// </returns> [Route("dhtml/ztc/{viewname}.html")] public IActionResult ZTC(string viewname) { var view = _compositeViewEngine.FindView(ControllerContext, $"ZTC/{viewname}", false)?.View; if (view == null) //判斷指定的視圖文件是否存在 { // TODO return View("NotFound"); } return View($"ZTC/{viewname}"); } #endregion 直通車宣傳頁 } }
Demo源碼:
鏈接:https://pan.baidu.com/s/1qZvzH3sWGLh0XHzYfsd3CQ 提取碼:72p1
版權聲明:如有雷同純屬巧合,如有侵權請及時聯繫本人修改,謝謝!!!