通过添加新路由搞砸了@ Ajax.ActionLink的渲染

时间:2012-08-03 13:06:57

标签: asp.net-mvc-3 asp.net-mvc-routing

我有一个ActionLink:

<td>
    @Ajax.ActionLink(item.HostedBy, "_DetailsMerged", "Marcher",
            new { id = item.HostedById },
            new AjaxOptions
            {
                UpdateTargetId = "marcherId" + @i ,
                HttpMethod="GET",
                InsertionMode = InsertionMode.Replace,
            })

</td>

在我有默认路由时显示相应的链接。但是,在默认路由之前引入地理位置代理的路由(其中包含IRouteHandler并且是自定义路由处理程序):

routes.Add("WebgisUscproxy", new Route("WebgisUscproxy", new OpenLayers_Bronze.Utility.WebgisUscProxyHandler()));

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
 );

在我的客户端javascript ajax调用(看起来像/WebgisUscproxy?zip=10003)中为半硬编码链接正常工作时,搞砸了@Ajax.ActionLink链接的呈现方式。他们也选择了'/WebgisUscproxy'。所以我得到了:

http://localhost:59723/WebgisUscproxy?action=_DetailsMerged&controller=Marcher&id=1

而不是:

http://localhost:59723/Marcher/_DetailsMerged/1 

这就是我想要的,并且只使用默认路由。投入:

routes.Add("WebgisUscproxy", new Route("WebgisUscproxy", new OpenLayers_Bronze.Utility.WebgisUscProxyHandler()));

默认路由处理程序也不起作用,因为默认路由现在匹配半硬编码链接,如'/WebgisUscproxy?zip=10003'

=============================================== ===========================

我找到了解决办法,但我希望有人能更直接地发布一些内容。

routes.MapRoute("webgisusc", "WebgisUscProxy",     
                    new { controller = "Utility", action = "WebgisUsc" }
                    ).RouteHandler = new OpenLayers_Bronze.Utility.WebgisUscProxyHandler();

我创建了一个空的Utility控制器,并且要添加一个虚拟的“WebgisUscProxy” 它的动作,但事实证明,甚至没有必要使用虚拟的UtilityController。这个路由定义本身就可以工作。

0 个答案:

没有答案