在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

轉載請保留此原文鏈接https://www.cnblogs.com/xyh9039/p/13049734.html

版權聲明:如有雷同純屬巧合,如有侵權請及時聯系本人修改,謝謝!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM