将命名空间添加到自定义路由

时间:2013-04-28 06:01:03

标签: namespaces asp.net-mvc-routing

我似乎无法弄清楚如何将命名空间添加到自定义路由中,我有以下内容

routes.Add("DomainRoute",
            new DomainRoute("{store}.domain.*", 
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index" },
                new string[] { "Mynamespace.Subdomain.Controllers" }));

routes.MapRoute("Default",
            "{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = "" },
            new string[] { "Mynamespace.Controllers" });

这是DomainRoute的构造函数

public DomainRoute(string domain, string url, object defaultValues, string[] namespaces)
        : base(url, new RouteValueDictionary(defaultValues), new MvcRouteHandler())
    {
        Domain = domain;

        if (namespaces != null && namespaces.Length > 0)
        {
            DataTokens = new RouteValueDictionary();
            DataTokens["Namespaces"] = namespaces;
        }
    }

但是当我运行此代码时,我收到错误:

发现多个类型与名为' Home'的控制器匹配。如果为此请求提供服务的路由(' {controller} / {action} / {id}')未指定名称空间来搜索与请求匹配的控制器,则会发生这种情况。如果是这种情况,请通过调用' MapRoute'的过载来注册此路线。采用'命名空间的方法'参数。

0 个答案:

没有答案