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