gpt4 book ai didi

javascript - Page.ResolveUrl 在 javascript 中不起作用

转载 作者:行者123 更新时间:2023-11-30 13:18:04 27 4
gpt4 key购买 nike

在 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() 代码有什么问题?

最佳答案

正如 poncha 所指出的,问题在于,就 ASP.NET 而言,.js 文件中传递的内容是一个字符串。在 IIS 交付它之前,它不应用任何类型的呈现。它得到与任何其他内容 文件相同的处理,如 .jpg.png .

为了调用服务器端方法(如 ResolveUrl ),您需要使用 <% ... %>由 ASP.NET 解析的任何页面中的语法(如 .aspx.master 文件)。


顺便说一下,这些小代码块有很多不同的名称:


特别是,我们想要一个 Displaying Expression使用语法 <%= ... %> ,其中:

the value that is entered after the equals sign is written into the current page

知道这一点后,我们可以使用 ResolveClientUrl() 构建我们自己的 URL其中:

returns a URL string suitable for use by the client to access resources on the Web server

为此,我们将传递 Web Application Root Operator~字符,其中 ASP.NET:

resolves the ~ operator to the root of the current application:

通过组合这些,我们可以通过将以下代码放在您的母版页上(改编自 Joel Varty's blog),将显示表达式的结果保存到 JavaScript 变量中:

<script type="text/javascript">
var baseUrl = '<%= Page.ResolveClientUrl("~/") %>';
</script>

由于 JavaScript 变量本质上是全局变量,任何其他脚本现在都可以访问 baseUrl变量,因此我们可以通过以下脚本从 .js 文件中使用它:

function ResolveUrl(url) {
return url.replace("~/", baseUrl);
}

现在您可以调用ResolveUrl("~/DynamicMenu.ashx")直接从您的 javascript 文件创建适当的 URL,方法是删除“~/”并将其替换为服务器端脚本之前创建的 baseUrl。


进一步阅读:

关于javascript - Page.ResolveUrl 在 javascript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11263425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com