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