MVC 5 是不是存在控制器
Posted
技术标签:
【中文标题】MVC 5 是不是存在控制器【英文标题】:MVC 5 does a controller existMVC 5 是否存在控制器 【发布时间】:2014-11-27 09:20:17 【问题描述】:我正在编写一个 MVC 5 互联网应用程序,想知道是否可以检查 controller
exists
是否只有 name
的 controller
?
我有一个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 是不是存在控制器的主要内容,如果未能解决你的问题,请参考以下文章