在開發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
轉載請保留此原文鏈接:https://www.cnblogs.com/xyh9039/p/13049734.html
著作權宣告:如有雷同純屬巧合,如有侵權請及時聯系本人修改,謝謝!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/17103.html
標籤:.NET Core
