在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

版权声明:如有雷同纯属巧合,如有侵权请及时联系本人修改,谢谢!!!

posted @   谢友海  阅读(1175)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示