【发布时间】:2012-02-11 17:05:31
【问题描述】:
在我的 ASP.NET MVC 应用程序中,我使用了一个小助手来遍历所有控制器。 此帮助程序位于与我的 MVC 应用程序不同的程序集中,我正在引用它。
问题是,当在助手中调用 Assembly.GetCallingAssembly() 方法时,它不会返回 MVC 应用程序集,而是返回助手程序集。 这不是我期望得到的,因为我所有的控制器都存在于 MVC 应用程序集中,我需要反映它。
视图代码(MVC 应用程序集):
<nav>
<ul id="menu">
@foreach(var item in new MvcHelper().GetControllerNames())
{
@Html.ActionMenuItem(
(string)HttpContext.GetGlobalResourceObject("StringsResourse", item), "Index",
item)
}
</ul>
</nav>
Helper 代码(独立程序集):
public class MvcHelper
{
public List<string> GetControllerNames()
{
var controllerNames = new List<string>();
GetSubClasses<Controller>().ForEach(
type => controllerNames.Add(type.Name));
return controllerNames;
}
private static List<Type> GetSubClasses<T>()
{
return Assembly.GetCallingAssembly().GetTypes().Where(
type => type.IsSubclassOf(typeof(T))).ToList();
}
}
我在这里做错了什么?
【问题讨论】:
标签: c# asp.net-mvc reflection