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

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

  • 相关阅读:
    System.Reflection.MemberInfo.cs
    System.Reflection.CustomAttributeData.cs
    System.Reflection.CustomAttibuterNamedArgument.cs
    数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询
    RMAN完整全备份
    RMAN增量备份-备份保留策略-设置备份集属性
    安装sql server 2008 management studio时,提示升级VS2008 到 SP1
    RMAN备份各种物理文件
    ORACLE物理存储结构
    视图、序列、索引、同义词
  • 原文地址:https://www.cnblogs.com/xyh9039/p/13049734.html
Copyright © 2011-2022 走看看