asp.net-mvc - 如何在 MVC3 的自定义路由处理程序中指定命名空间?

标签 asp.net-mvc namespaces asp.net-mvc-routing asp.net-mvc-areas mvcroutehandler

<分区>

我已经编写了一个自定义路由处理程序。因为我的网站中有 Controller 名称冲突的区域,所以我收到错误消息:发现多个类型与名为...的 Controller 相匹配

我想我需要在我的处理程序中指定一个命名空间,对吧?

我尝试了以下方法,但均无效:

public class MyRouteHandler : MvcRouteHandler
{
    protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
    {

        (... complicated DB lookups and "re-writing" of requestContext.RouteData.Values["controller"] ...)

        // doesn't work
        requestContext.RouteData.Values["namespaces"] = new[] { "Site.Contollers" };

        // doesn't work
        requestContext.RouteData.DataTokens.Add("namespaces", new[] { "Site.Contollers" });

        // doesn't work
        requestContext.RouteData.Values["namespaces"] = "Site.Contollers";

        // doesn't work
        requestContext.RouteData.DataTokens.Add("namespaces", "Site.Contollers");

        (... snip ...)

        return base.GetHttpHandler(requestContext);
    }
}

正确的做法是什么?

注意:因为我的处理程序执行数据库查找并根据结果选择不同的 Controller ,所以我不能在我的 Global.asax.cs 文件中使用基本的 MapRoute() 方法(据我所知)。

最佳答案

我的天啊,我傻了。

我拼错了“Controllers”。正确答案是:

requestContext.RouteData.DataTokens.Add("namespaces", new string[] { "Site.Controllers" });

关于asp.net-mvc - 如何在 MVC3 的自定义路由处理程序中指定命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466430/

相关文章:

c# - 在扩展方法中渲染部分失败

asp.net-mvc - 如何从 URL 获取 ID 作为参数

c# - Asp.Net MVC 默认路由

javascript - 将输入的日期转换为 Date 对象

javascript - Bootstrap 日期时间选择器删除子午线上午/下午

c# - 预生成 Entity Framework View

python - 这可能涉及 namespace ,但我无法弄清楚为什么在一个示例中找不到该名称,但在另一个示例中找到了

objective-c - 如何限制Objective C中枚举值的可见性?

r - 在 R 包中记录重新导出的函数

c# - ActionFilterAttribute 未调用