在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

相关文章
相关标签/搜索