2

私は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();

空のユーティリティ コントローラを作成し、それにダミーの「WebgisUscProxy」アクションを追加しようとしましたが、ダミーの UtilityController さえ必要ないことがわかりました。このルート定義は、すべて単独で機能します。

4

0 に答える 0