是否可以使用相对路径列出项目中的所有视图?无需手动静态输入所有视图。
我查看了Razor名称空间和类以及ViewEngine名称空间和类,并且无法自己查看。
答案 0 :(得分: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 的免费软件来获得以下结果。
请使用文件>>导入>>文件夹结构功能来获取所需的特定视图。
然后可以使用文件>>导出地图将其导出为Excel文件
答案 1 :(得分:0)
如果只想查看所有视图列表,只需检查〜/ Views目录下的文件(Server.MapPath)。我认为没有必要反思。
答案 2 :(得分:-2)
使用以下链接获取所有视图,而不使用其相对路径:
e.g。而不是
@Html.ActionLink("Delete Dinner", "Delete", "Dinners", new { id = Model.DinnerID }, null)
T4MVC允许你写
@Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID))