zoukankan      html  css  js  c++  java
  • 在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

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

  • 相关阅读:
    驱动模块的加载与卸载
    设备驱动操作函数
    Ubuntu驱动程序开发5-根文件系统构建
    Ubuntu驱动程序开发4-内核移植和配置
    Ubuntu驱动程序开发3-Uboot移植和配置
    bootargs环境变量解析
    Shell脚本(2)
    Shell脚本(1)
    Linux环境变量
    Linux系统中ps -l命令显示的英文含义
  • 原文地址:https://www.cnblogs.com/xyh9039/p/13049734.html
Copyright © 2011-2022 走看看