在jQuery代码中,我使用的是ResolveUrl("~/DynamicMenu.ashx")。
但它只返回确切的字符串:
"ResolveUrl("~/DynamicMenu.ashx")"
下面是一些代码:
pageIndex = pageIndex + 1;
var CountryCode = getCookie("SetCountry");
var urlToHandler = '<%= ResolveUrl("~/DynamicMenu.ashx") %>';
urlToHandler = urlToHandler + CountryCode + "&PageIndex=" + pageIndex;
alert(urlToHandler);我为ResolveUrl()编写的代码有什么问题
发布于 2014-01-08 20:16:16
正如蓬查所指出的,问题在于,就ASP.NET而言,.js文件中交付的内容是一个字符串。在IIS交付之前,它不应用任何类型的呈现。它得到与.jpg或.png一样的任何其他内容文件的待遇。
为了调用服务器端方法(如ResolveUrl),您需要在由ASP.NET解析的任何页面中使用<% ... %>语法(比如.aspx或.master文件)。
顺便说一句,这些小代码块有很多不同的名称:
特别是,我们需要一个语法为http://msdn.microsoft.com/en-us/library/6dwsdcf5.aspx的<%= ... %>,其中:
在将等号写入当前页后输入的值。
知道了这一点,我们就可以使用ResolveClientUrl()构建自己的URL,如下所示:
返回适合客户端用于访问Web服务器上资源的URL字符串
为此,我们将传入Web应用根操作符或~字符,其中ASP.NET:
将~运算符解析为当前应用程序的根:
通过组合它们,我们可以将显示表达式的结果保存到JavaScript变量中,方法是在母版页上放置以下代码(改编自Joel Varty的博客):
<script type="text/javascript">
var baseUrl = '<%= Page.ResolveClientUrl("~/") %>';
</script>由于JavaScript变量本质上是全局的,所以任何其他脚本现在都可以访问baseUrl变量,因此我们可以使用下面的脚本从.js文件中使用它:
function ResolveUrl(url) {
return url.replace("~/", baseUrl);
}现在您可以从您的javascript文件直接调用ResolveUrl("~/DynamicMenu.ashx"),它将通过去掉"~/“并替换为服务器端脚本先前创建的baseUrl来创建适当的URL。
二读:
发布于 2012-06-29 14:26:36
试试这个解决方案- Javascript中的ResolveUrl
https://stackoverflow.com/questions/11263425
复制相似问题