在我的global.asax.cs中的Begin Reqeust方法中,我想检查当前请求是否是MVC请求,而不是请求.css文件或.js文件等。
说我有以下控制器:
/User/
/Product/
/Store/
/Checkout/
我想遍历控制器的名称,并验证当前请求的URL是否适用于上述控制器中的操作。
How can I look through the controller names?
答案 0 :(得分:2)
根据您的需要,您的最佳解决方案是routes.IgnoreRoute()
。
有关各种示例,请参阅here和here,但基本前提是您希望 MVC引擎接受路由,但随后它说“我是不应该对此做任何事情“并让它回到IIS找到实际文件。
这意味着您无需在运行中尝试确定您拥有哪些控制器,这在您的服务器上更容易。
答案 1 :(得分:1)
您可以使用反射并从指定的命名空间中获取所有控制器。
using System.Reflection;
private Type[] GetControllersInNamespace(Assembly assembly, string controllernamespace)
{
return assembly.GetTypes().Where(types => string.Equals(types.Namespace, controllernamespace, StringComparison.Ordinal)).ToArray();
}