2012-06-22 20 views
2

我正在構建具有一些資源的ASP服務器控件。其中之一是.js文件,我必須從我的ServerControl.cs文件傳遞一個變量。服務器控件中嵌入資源的.js文件中的C#變量ASP.NET

我知道如何例如獲得資源的圖像在我的資源樣式文件和JavaScript文件是這樣的:

var resourceOpen = "<%=WebResource("PatientList.Images.DirOpen.png")%>" ; 
var resourceClose = "<%=WebResource("PatientList.Images.DirClose.png")%>"; 

background: url('<%=WebResource("PatientList.Images.letter-bg.png")%>'); 

我要與我的公共變量一樣在我的服務器控件.cs文件 讓我們說我有

public string TestVariable = "It works" 

如何將它傳遞給我的資源中的JavaScript文件?

var jsvariable = "<%=TestVariable%>" 

不起作用。似乎只有WebResource(...)有效。當我嘗試使用變量,當我做這樣的事情:

alert("<%=TestVariable%>"); 

與字符串「<%= TestVariable%>」的窗口會出現,而不是「它的工作原理」

+0

它應該工作......除了明顯的「你丟失分號」。如果你使用VS(因爲我)intellisense顯示變量。 – carny666

+0

它的作品,但不是在我的嵌入式資源JavaScript文件。只有當我有我的aspx文件的代碼隱藏單獨的JavaScript和c#變量。但我想讓服務器控制。包含所有內容的dll文件。發生問題。這很奇怪,因爲它適用於<%= %>內的WebResource(...),但似乎與其他所有內容一起失敗。 –

+0

啊,我明白了。也許你應該從主頁面將值傳遞給你的JavaScript函數。 – carny666

回答

1

也許我不是正確理解你的問題,但你有一個引用外部JavaScript文件的服務器控件,但在你想在控件上使用屬性的外部文件中。

如果這就是你要求的,那麼恐怕沒有編寫自定義處理程序或類似的東西是不可能的。你看,外部JavaScript文件是由客戶單獨從你的控制執行中請求的。當JavaScript文件由服務器提供時,控件早已被銷燬。

這裏發生了什麼:

  1. 的請求涉及到你的服務器的頁面
  2. 該頁面加載並創建你的用戶控件和一個鏈接到外部JavaScript文件
  3. 客戶端會從結果服務器
  4. 客戶端看到一個指向外部JavaScript文件的鏈接,並從服務器請求它
  5. 對服務器的請求javascript文件進入服務器
  6. ,服務器對客戶端的JavaScript文件

正如你可以看到,有兩個請求在(步驟1和步驟5)的到來。在第二個請求中,對於JavaScript文件,您不再擁有可用屬性的控件(在步驟1中)。

我能想到完成這件事的唯一方法就是使用自定義處理程序來提供javascript。通過這種方式,您可以將任何變量作爲查詢字符串值傳遞,並讓自定義處理程序將它們插入到您的Java腳本中。

我希望這能回答你的問題。

+0

謝謝你的回答。但我有JavaScript文件作爲我的服務器控件中的嵌入式資源,我可以解析這個文件,當我想從我的控制像圖像獲取其他資源(如我的問題所示)我只需要添加PerformSubstitution = true到我的AssemblyInfo。 cs文件。所以當我加載PARSE .js文件之前,我不相信沒有從c#代碼中獲取單個變量的選項。但我只知道如何獲得資源...變量不起作用:( –

+0

因爲它們是常量,所以您可以添加外部圖像。從原始文章中您可以引用「PatientList.Images.letter-bg.png」,因爲這個文件很難被編譯到你的程序集中,因此總是存在的,你的本地變量「TestVariable」的值只能在填充它的特定請求中使用,而實際獲得JavaScript文件內容的後續請求不再有這個變量。 – Robba

相關問題