列出ASP.MVC中的所有视图

问题描述 投票:0回答:2

是否可以列出项目中的所有视图及其相对路径?无需手动静态键入所有视图。

我环顾了Razor命名空间和类以及ViewEngine命名空间和类,而自己却看不到任何东西。

c# asp.net-mvc razor views
2个回答
0
投票

如果只需要所有视图列表,只需检查〜/ Views目录(Server.MapPath)下的文件。我认为不需要反思。


0
投票

这可能是一个古老的问题,但是这里有。

选项1

您需要从Global.asax文件中检索程序集名称。应将名称空间和第一个公共类组合在一起,以在下面获得程序集名称。

namespace XYZ
{
    public class MvcApplication : System.Web.HttpApplication

程序集是XYZ.MvcApplication

下面的查询将检索ASP.NET MVC项目中所有控制器和操作方法的列表。下面的代码将帮助您将其枚举为一个视图。

    @using System.Reflection;
    @{
        ViewBag.Title = "Dashboard";

        Assembly asm = Assembly.GetAssembly(typeof(XYZ.MvcApplication));

    var paths = asm.GetTypes()
    .Where(type => typeof(System.Web.Mvc.Controller).IsAssignableFrom(type))
    .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public))
    .Where(m => !m.GetCustomAttributes(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute), true).Any())
    .Select(x => new { Controller = x.DeclaringType.Name.Replace("Controller", null), Method = x.Name })
    .OrderBy(x => x.Controller).ThenBy(x => x.Method).ToList();
    }


                <table class="table table-bordered table-condensed table-striped">
                    <thead>
                        <tr>
                            <th>Controller</th>
                            <th>Method</th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach (var i in paths)
                        {
                            <tr>
                                <td>@i.Controller</td>
                                <td>@i.Method</td>
                            </tr>
                        }
                    </tbody>
                </table>

选项2

您的非技术同事还有另一种选择来获取视图中使用的文件列表。

使用名为Freeplane的免费软件来获得以下结果。

Free Plane >> Import Folder Structure

请使用文件>>导入>>文件夹结构功能以获取所需的特定视图。

Import Views Folder Structure

然后可以使用文件>>导出映射将它们导出为Excel文件

© www.soinside.com 2019 - 2024. All rights reserved.