2012-02-03 53 views
2

从外部JavaScript文件中,我需要检查IsPostBack(ASP.NET页面)。以下是我在Google上搜寻后发现:检查外部JavaScript文件中的IsPostBack

var isPostBack = <%= Page.IsPostBack ? "true" : "false" %>; 

<%=%>似乎并不在外部JS文件得到认可。如果是这样,那么备用解决方案是什么?

回答

3

您将无法从外部文件执行此操作。即使可以,外部文件也会缓存在客户端的浏览器中,并且每次都不会被拉取。您可能可以在页面中放置一个函数并从外部脚本中调用它。

外部脚本

if(isAPostBack) 
{ 
//run code 
} 

ASPX页面(脚本中头)

var isAPostBack = <%= Page.IsPostBack %>; 

只要确保你的外部脚本获取网页上线后装入。

3

对于要处理的ASP代码,您需要有一个文件扩展名,它映射到IIS中的ASP DLL。

这里最简单的情况是使用.aspx扩展名重命名.js文件,然后更改<script>元素的src属性。

另外,全球范围内创建isPostBack变量在aspx页面,然后打电话给你的js文件,其中包含它的用法,如:

<script type="text/javascript"> 
    var isPostBack = <%= Page.IsPostBack ? "true" : "false" %>; 
</script> 
<script type="text/javascript" src="/js/myscript.js"></script> <!-- <- script that uses isPostBack --> 
+2

将扩展名更改为aspx将无法正常工作,因为当从脚本标记加载页面(脚本)时,即使父页面具有“isPostBack == true”,isPostBack将始终为“false”。 -1,但为你的替代解决方案+1。网络投票= 0. – gilly3 2012-02-03 20:14:32

+0

@ gilly3关于变量总是在脚本标记为假的好处 - 我的不好。很高兴我至少打破了即使:) – 2012-02-03 22:08:49

0

你不能在一个外部JavaScript文件中使用<%= %>符号;不起作用。

0

这将不会在JavaScript文件中工作,导致服务器将为此服务,并且不会识别asp标签。但是,您可以从aspx文件中执行此操作,并且它可以工作。您也可以使用通用处理程序。

祝你好运!

0

您只能通过页面上使用的aspx页面或用户控件或主页面来渲染此variable