1

我正在开发一个从经典 ASP 项目演变而来的 ASP.net 3.5 项目。我们有两个旧的 Javascript 文件,它们包含在几个页面中,并且从未正确更新。Javascript 包含 ASP.Net 服务器标记,文件以 .js.aspx 扩展名保存。

嵌入的 VB.net 引用类中的共享(静态)属性以及 ASP.net 会话变量。有问题的类未导入 Javascript 文件中,因此 Visual Studio 无法编译该页面。但是,当您加载包含这些文件的页面时,它可以正常工作。

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

谢谢。

编辑以回答问题:

该文件与 <!-- #include virtual="myFile.js.aspx" --> 一起包含在脚本标记中。编译器错误是:“未声明名称‘MyClass’”,其中 MyClass 是被引用的类。

4

2 回答 2

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);

这将很好地发送值,并且在我看来比直接在 JS 代码中更正确。

于 2011-03-17T14:07:27.640 回答
1

完全限定您的类,例如,如果您的类在命名空间中

YourCompany.YourApp

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

并确保您已添加对它所在的 DLL 的引用。

另请注意,ASP 样式包含在 ASP.Net 中不起作用。

于 2011-03-17T14:01:04.567 回答