MVC 5 是不是存在控制器

Posted

技术标签:

【中文标题】MVC 5 是不是存在控制器【英文标题】:MVC 5 does a controller existMVC 5 是否存在控制器 【发布时间】:2014-11-27 09:20:17 【问题描述】:

我正在编写一个 MVC 5 互联网应用程序,想知道是否可以检查 controller exists 是否只有 namecontroller

我有一个Application_Error 函数,它在发生错误时获取controller 的名称,我希望重定向到controller 的索引方法。问题是用户可以输入一个不存在的controller 名称,然后重定向到这个controller 会导致死循环。

提前致谢。

【问题讨论】:

【参考方案1】:
var tempRequestContext = new RequestContext(Request.RequestContext.HttpContext, 
                                            new RouteData());
tempRequestContext.RouteData.DataTokens["Area"] = "";
tempRequestContext.RouteData.DataTokens["Namespaces"] = "YourCompany.Controllers";
var controller = ControllerBuilder.Current.GetControllerFactory()
            .CreateController(tempRequestContext, "ControllerName");

if(controller != null)

   //TODO: Redirect

【讨论】:

目前,如果控制器不存在,我会遇到异常。检查控制器是否不存在以检查是否抛出异常的唯一方法是? 我对您的代码所做的所有更改是将“ControllerName”替换为所需的控制器名称。这就是所有需要做的事情吗? 你还需要更改命名空间 控制器不存在时不应该为空或者包含控制器,你也设置了区域?你得到了什么例外? System.Web.HttpException 未被用户代码处理。 System.Web.Mvc.dll 中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理附加信息:找不到路径“/knaklsdnlsda”的控制器或未实现 IController。

以上是关于MVC 5 是不是存在控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MVC 5 在基于令牌的身份验证中检查用户是不是从控制器登录?

远程验证在 ASP.NET MVC 5 中不起作用

.NET MVC控制器分离到类库的方法

asp.net MVC

MVC-ARS 是不是比经典 MVC 更可取以防止过载?

在实现接口的控制器上使用 @Controller 的 Spring-MVC 问题