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 工作,以便用户单击它以打开菜单,然后再次单击以选择并重定向到所选页面。但是,显然,如果 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 回答