我有一个 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()));
AFTER 默认路由处理程序也不起作用,因为默认路由现在匹配半硬编码链接,例如'/WebgisUscproxy?zip=10003'
.
==================================================== =========================
我找到了解决方法,但我希望有人发布更直接的内容。
routes.MapRoute("webgisusc", "WebgisUscProxy",
new { controller = "Utility", action = "WebgisUsc" }
).RouteHandler = new OpenLayers_Bronze.Utility.WebgisUscProxyHandler();
我创建了一个空的 Utility 控制器,并打算向它添加一个虚拟的“WebgisUscProxy”操作,但事实证明甚至不需要一个虚拟的 UtilityController。这个路由定义本身就可以工作。