簡體   English   中英

通過Javascript從代碼后面訪問全局靜態變量

[英]Access global static variable from code behind through Javascript

當從一個從javascript調用的函數后面的代碼中獲取它時,我在訪問類中的靜態變量時遇到了一些問題。

我的aspx頁面:

<script type="text/javascript">
function AlertMsg(msg) {
   var msg213 = "<%= GetValue(" msg ") %>";
   alert(msg + '::' + msg213);
}
</script>

代碼背后:

public string GetValue(string sString)
{
   return MyNamespace.MyClass.MyStaticVariable;
}

我在另一頁的page_load中設置了這個變量。 我通過從C#WebBrowser應用程序調用它來訪問javascript函數。 它總是空的。

有任何想法嗎?

ASP.NET不像桌面應用程序,移動到另一個頁面時,寫在另一個頁面上的任何變量都將丟失。 您需要將值保存到某個持久性的地方。

  1. 會議
  2. 高速緩存
  3. 數據庫
  4. 應用程序或Web配置文件。
  5. 變量需要是const或static

我想你只需要在'msg'的引用周圍添加'+'

var msg213 = "<%= GetValue(" + msg + ") %>";

嘗試這個

'<%= GetValue("Some Value") %>';

這意味着當頁面呈現時,GetValue方法調用和返回字符串將在文檔體中寫入,如Respose.Write

只有當頁面呈現並且不再發生進一步調用時才會發生這種情況。

我認為部分混亂來自代碼中的格式。 如果只查看服務器標記: <%= GetValue(" msg ") %> ,您將看到正在調用GetValue方法,並且正在傳入文字字符串msg 。服務器標記本身周圍有引號,但那些不影響服務器標簽內的內容。 沒有傳遞JavaScript函數的msg參數的值。

無法以如此簡單的方式從JavaScript調用服務器方法,它需要使用像AJAX這樣的東西來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM