0

ResolveUrlを使用するために私が見たすべての例には、次に示すようなリテラルパスが含まれています。

window.location='<%= ResolveUrl("~/Account/Login.aspx") %>'

ただし、Infragistics WebDataMenuのメニューコンテキストからリダイレクトしたいURLを解析し、その変数をResolveUrlにパスしようとしています。私が使用している関数はここにあります:

    function menuMain_ItemSelected(sender, e) {
        var menuContext = e._context.adr;
        var intPartOfMenuContext = parseInt(menuContext);
        if (menuContext !== intPartOfMenuContext.toString()) {
            var selectedURL = e._props[2]._element.childNodes[0].href;
            window.location = '<%= ResolveUrl(' + selectedURL + ') %>';
        } 
    }

問題は、ResolveUrl行に「文字リテラルの文字が多すぎます」というエラーが表示されることです。

selectedURLの例は次のとおりです。

"http://localhost:52168/ITRequest/Person.aspx?MenuTitle=Users"

参考:最終的に、私がやろうとしているのは、ユーザーがWebDataMenuをクリックしてメニューを開き、もう一度クリックして選択して選択したページにリダイレクトするようにWebDataMenuを機能させることです。ただし、ActivateOnHover = "False"(これが必要です)の場合、メニューが開いたら、コントロールは下向きの矢印とEnterキーの押しにのみ応答するようです。ですから、もっと明白な何かが欠けているのなら、私はすべての耳です。

ありがとう、ダン

4

2 に答える 2

1

私はこれが古いことを知っていますが、より良い参考のために、あなたがやろうとしていたことを正しく達成する方法は次のとおりです。

function menuMain_ItemSelected(sender, e){
    var selectedURL = /*Your code goes here*/;
    window.location.href = ResolveUrl(selectedURL);
}

function ResolveUrl(url) {
    var baseUrl = '<%= ResolveUrl("~/") %>';
    if (url.indexOf("~/") == 0) {
        url = baseUrl + url.substring(2);
    }
    return url;
}
于 2013-10-08T21:09:16.940 に答える
0

どうやらこれは一歩踏み出しすぎたケースだったようです。私が見つけた解決策は、ResolveUrlを行から完全に削除し、下の行を残すことでした。これは私にとってはうまくいきました。

window.location = selectedURL;
于 2013-02-21T16:00:36.687 に答える