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

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

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

提前致谢。

【问题讨论】:

    标签: asp.net-mvc controller asp.net-mvc-5 exists


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 2013-12-05
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多