1

我正在从一个经典的ASP项目演化出来的ASP.net 3.5项目。我们有几个页面中包含两个旧的Javascript文件,并且从未更新过。 Javascript包含ASP.Net服务器标签,并且文件以.js.aspx扩展名保存。升级经典ASP Javascript包括到.net

嵌入式VB.net引用类中的共享(静态)属性以及ASP.net Session变量。这个类没有被导入到Javascript文件中,所以Visual Studio无法编译页面。但是,当您加载包含这些文件的页面时,它工作正常。

将这些文件更新为.Net标准的正确方法是什么?我们是否应该避免在Javascript文件中使用服务器标签,或者是否有一种.Net方式将Javascript和服务器端代码混合到可包含文件中?

谢谢。

编辑回答问题:

该文件被包含在< - #包括虚拟= “myFile.js.aspx” - >一个脚本标签中!编译器错误是:“名称'MyClass'未声明”,其中MyClass是被引用的类。

+0

我是否正确理解你,你有一个服务于JavaScript的aspx页面,并且在该页面中有一些asp.net服务器端标记,然后使用脚本在另一个页面中添加对此页面的引用标签?但在JavaScript页面中出现编译器错误? - 最新错误? – 2011-03-17 12:57:08

+0

是的,基本上。我编辑了我的问题以提供更多细节。 – 2011-03-17 13:56:38

回答

1

完全限定类,例如,如果你的类是在命名空间

YourCompany.YourApp

然后在.js.aspx文件,你做YourCompany.YourApp.MyClass

而且使确定你已经添加了这个DLL所在的DLL的引用。

另请注意,ASP风格包括不在ASP.Net中工作。

+0

ASP包含的#include虚拟位是否包含?什么是ASP.net等价物? – 2011-03-17 15:10:35

+0

完全合格的班级工作!谢谢。 – 2011-03-17 15:31:23

+0

我接受这个答案,因为完全量化课程是我需要做的。 – 2011-03-18 19:58:47

2

如果你需要JS函数里面的服务器端数据,我会建议不同的方式。

例如,假设你现在有这样一件事:

function Foo() { 
    var f = "hello <%=MyClass.LoggedUser%>"; 
} 

变化这是这个:

function Foo() { 
    var f = "hello " + _loggedInUser; 
} 

然后在Page_Load活动页面自身添加这样的代码:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "logged_user", "var _loggedInUser = '" + MyClass.LoggedUser + "'; ", true); 

这个w虐待发送的价值就好了,在我看来是比直接在JS代码更正确。

+0

这真是一个好主意...... – 2011-03-17 15:31:46

+0

@Cos是的,'<%= %>'是经典的ASP的方式,所以我尽量避免它在'ASP.NET' :) – 2011-03-17 15:56:29

+0

我希望我能接受你的答案作为正确答案以及上面的答案!你已经帮助我认识到,因为Javascript是在一个aspx页面中,我可以使用Page_Load来完成它。也许它应该是显而易见的,但我从来没有这样想过。非常感谢你的启发:) – 2011-03-18 20:00:53