我写了一个自定义路由处理程序。 因为我的网站中的区域中存在冲突的控制器名称,所以我收到错误:找到了多个匹配控制器命名的类型...

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

我尝试了以下,没有一个工作:

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);
    }
}

什么是正确的方法?

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

===============>>#1 票数:12 已采纳

天哪,我很蠢。

我拼错了“控制器”。 正确答案是:

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

  ask by user1092572 translate from so

未解决问题?本站智能推荐:

1回复

如何从自定义MvcRouteHandler退回到路由表中的下一个

我有一个自定义MvcRouteHandler,它检查数据库是否存在Url并将其与某些控制器操作和ID配对。 但是,如果此路由处理程序在数据库中找不到匹配的对,我希望MVC继续尝试使用路由表中其他定义的路由处理程序。 我怎样才能做到这一点? 更新:(添加了示例代码) Fr
2回复

MVC 4:自定义路由和HTML.Action不同步

因此,我有此自定义路由,它基于URL中的区域性设置了路由表,但是当我调用Url.Action(...)时,它不会生成本地化的URL。 有什么想法我做错了吗? 页面上的文化正在发生变化,我能够确定用户选择了哪种语言,但是Url.Action不会生成本地化的URL。 这是自定义路由,它将更
2回复

.net mvc route默认控制器/操作但不是默认参数

我创造了这条路线 当我然后浏览到 它工作,但如果我浏览 这是行不通的。 如果我然后改变了这样的路线 完全相反的工作(这是有道理的)。 但我很好奇第一条路线,我认为两个网址都应该工作,因为它没有给出默认控制器和动作。 更新 最后我只跟这个去了
1回复

MVC路由映射

我有一个网站,xyz.com,用户正在设置管理员帐户,然后他们有其他用户在他们下面注册。 他们称自己的帐户名为wisconsinsponsor 。 另一个用户设置另一个名为iowasponsor帐户。 因此,我希望能够让用户可以浏览xyz.com/wisconsinsponsor和xyz.
3回复

动态MVC路由:动作名称

我有控制器名称:About和操作名称:Index。 但我希望URL像这样(动作名称将是动态的) www.example.com/about/aaa www.example.com/about/bbb www.example.com/about/ccc 路由 调节器
1回复

MVC在文件名中路由2个参数

我正在使用MVC 5,我有这个网址: / Joe-studio-essex 这是2个独立的参数,{business}-{county} Q1)我该如何写一条路线将其分开? Q2)谁能想到一种处理该网址为“ / joes-studio-west-yorkshire”的方法,
1回复

使用ASP.net MVC从不同的目录路由静态文件,而不进行IIS更改和身份验证

让我留下来为我的应用程序的单个用户存储内容: C:\\文件{GUID} \\ 这些文件可能是这样的: C:\\文件{GUID} \\ bunny.jpg C:\\文件{GUID} \\ unicorn.html 最终用户应该看到一个“友好”的网址。
1回复

从MVC网址中删除ID

我有这样的异教徒。 <a style="background: #3DB39E; text-align: center; color: #ffffff; border: none; width: 60px;" class="btn btn-default" href="@
2回复

MVC5自定义路由从区域中删除控制器名称

到目前为止,我无法完成这项工作,我需要一些帮助。 我有一个基本的MVC 5站点,我添加了一个名为Administration的区域。 对于我的生活,我无法弄清楚如何正确设置区域的默认控制器/操作。 在我的网站中,我有一个名为Admin的区域,一个名为Admin的控制器(带有Index方
1回复

ASP.NET MVC 3区域 - 无法使用自定义路由查找视图

我在一个区域有一条自定义路线如下: 示例网址: /搜索/社区功能于新约克城 解决行动很好。 但它无法找到View。 未找到视图“索引”或其主数据或视图引擎不支持搜索的位置。 搜索了以下位置:〜/ Views / Search / Index.cshtml~