ResolveUrl变量获取“字符文字中的字符过多”错误

时间:2013-01-30 15:15:42

标签: javascript

我在使用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键。所以,如果我错过了一些更明显的东西,我全都听见了。

谢谢, 丹

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

显然,这是一个过分一步的案例。我找到的解决方案是简单地从线上删除ResolveUrl,留下下面的行,这对我有用。

window.location = selectedURL;