Page.ResolveUrl 在 javascript 中不起作用
Page.ResolveUrl is not working in javascript
在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
文件)中使用<% ... %>
语法。
顺便说一下,这些小代码块有很多不同的名称:
<小时 />
- 内联表达式
- 嵌入式代码块
- 代码掘金
- 服务器端脚本分隔符
- 代码呈现块
- ASP 指令
特别是,我们想要一个带有语法<%= ... %>
的显示表达式,其中:
将等号写入当前页后输入的值
知道了这一点,我们可以通过使用以下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。
延伸阅读:
- ResolveUrl 和 ResolveClientUrl 有什么区别?
- 相对网址
试试这个解决方案 - Javascript 中的 ResolveUrl
- 为什么这个 .push 不起作用?(JavaScript)
- document.createelement不起作用(javascript)
- Chrome 中表格的 CSV 导出不起作用 - JavaScript/AngularJS
- 如果语句不起作用 - JavaScript
- 为什么我的动态更改链接不起作用?(Javascript)
- RPS 函数不起作用(JavaScript)
- 计时器间隔不起作用 Javascript
- 通过返回 false - 不起作用(javascript)来阻止链接打开
- Eval 不起作用 - JavaScript
- Android 浏览器 .click() 不起作用 javascript
- 为什么这段代码不起作用?Javascript
- jsFiddle显示正确,但一旦在本地运行就不起作用(Javascript)
- 带有html的Navigator不起作用javascript
- 从文本文件中提取内容不起作用 JavaScript
- 从查询字符串中获取参数;不起作用..Javascript
- regex手机验证不起作用-javascript
- if和else语句不起作用(javascript)(html)
- 更改字体大小的复选框不起作用-Javascript
- 为什么这个基本的 if 语句不起作用?JavaScript
- Timer 不起作用/ JavaScript/ innerHTML null