列出 ASP.MVC 中的所有视图
Posted
技术标签:
【中文标题】列出 ASP.MVC 中的所有视图【英文标题】:List all views in ASP.MVC 【发布时间】:2014-08-20 21:10:41 【问题描述】:是否可以列出项目中的所有视图及其相对路径?无需手动静态输入所有视图。
我查看了 Razor 命名空间和类以及 ViewEngine 命名空间和类,但我自己看不到任何东西。
【问题讨论】:
反射应该有助于以编程方式获取所有视图 【参考方案1】:这可能是一个老问题,但这里是。
选项 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 的免费软件获得以下结果。
请使用文件>>导入>>文件夹结构功能来获取您需要的特定视图。
然后可以使用 File >> Export Map 将这些导出为 Excel 文件
【讨论】:
【参考方案2】:如果您只想查看所有视图列表,只需检查 ~/Views 目录 (Server.MapPath) 下的文件。我认为没有必要反思。
【讨论】:
以上是关于列出 ASP.MVC 中的所有视图的主要内容,如果未能解决你的问题,请参考以下文章
如何列出iOS中uiviewcontroller中的所有子视图?