在ASP.NET Core MVC Action中判斷某個視圖是否存在

在開發Web網站過程當中可能會遇到須要添加許多宣傳頁,這些宣傳頁每每不須要什麼後端邏輯代碼,這時候咱們就不但願爲每個宣傳頁都添加一個Action,html

而是但願只添加一個Action,而後結合路由動態的指向不一樣的視圖。而動態的指向不一樣的視圖這時候可能就須要用到判斷某個視圖是否存在,不存在執行某個邏輯。後端

下面咱們來看下Demo:函數

首先來看下Demo的項目結構網站

接下來看下核心代碼spa

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源碼:code

連接:https://pan.baidu.com/s/1qZvzH3sWGLh0XHzYfsd3CQ 
提取碼:72p1

 

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

相關文章
相關標籤/搜索