0

リダイレクトが既存の URL を取得するのに問題があります。棒グラフのバーにリスナーを追加した Google チャートがあるページがあります。ユーザーが棒グラフの 1 つをクリックすると、case ステートメントがルーターに渡す ID を決定します。

google.visualization.events.addListener(wrapper, 'select', selectHandler);

function selectHandler() {
  var selection = wrapper.getChart().getSelection()
     var monthsTransform = 0;
        switch(selection[0].column)
           {
            case 1:
                monthsTransform = 0;
                break;
            case 2:
                monthsTransform = 3;
                break;
            case 3:
                monthsTransform = 6;
                break;
            case 4:
                monthsTransform = 12;
                break;
            case 5:
                monthsTransform = 18;
                break;

            //no need to default as already set to 0!
            }
            var url = "newController/newPage/" + monthsTransform;
            window.location.href = url;
        }

私が抱えている問題は、

window.location.href 

newController/newPage を既存の URL に追加しているため、次のようになります。

localhost:1234/oldController/oldPage/newController/newPage/id
4

2 に答える 2

0

window.location.href の代わりに window.location.assign("/newController/newPage/" + monthsTransform) を使用します

新しい URL の前にサーバー名とプロトコルを追加し、Html.Action html ヘルパーを使用して URL を生成するとさらに便利です。

于 2012-07-23T09:17:56.327 に答える
0

サーバー側での URL の作成に関する私のブログ投稿を確認してください。

http://ilovedevelopment.blogspot.co.uk/2012/04/aspnet-mvc-3-generating-actionlink-in.html

簡潔にするために以下に貼り付けた核心 - 必要に応じて変更します。

string absoluteAction = string.Format("{0}://{1}{2}",
                                                  Url.RequestContext.HttpContext.Request.Url.Scheme,
                                                  Url.RequestContext.HttpContext.Request.Url.Authority,
                                                  Url.Action("ActionName", "ControllerName", new {Id = "Data"}));

これはコントローラーメソッド内で実行できるため、ajax 呼び出しを行い、Json の結果として適切な URL「absoluteAction」を返すことができます。

于 2012-07-23T09:28:32.410 に答える