Asp.net

通過javascript從後面的程式碼訪問變數

  • August 16, 2016

我有以下程式碼要返回到 javascript 中的變數“t”:

後面的程式碼:

Public Shared Function GetSomeText() As String
 Dim result = "This is from code behind"
 Return result
End Function

javascript中的呼叫者變數:

//This is not working like that, I think
   var t = GetSomeText();

那麼,如何使變數“t”從程式碼隱藏的函式 GetSomeText 中獲取“結果”?

謝謝你。

試試這個——假設這是頁面上的公共方法。這將在頁麵類上呼叫 GetSomeText() 方法,然後在呈現頁面時對頁面執行 Response.Write() 數據。結果應該在您的 javascript 中的單引號之間結束。

var t = '<%= GetSomeText() %>';

您需要將字元串寫入伺服器端程式碼中的 Javascript 變數,如下所示:(在<script>ASPX 頁面中的塊中)

var t = "<%= GetSomeText() %>";

請注意,您必須正確轉義它,如下所示:(或使用AntiXSS Toolkit

public static void QuoteString(this string value, StringBuilder b) {
   if (String.IsNullOrEmpty(value))
       return "";

   var b = new StringBuilder();
   int startIndex = 0;
   int count = 0;
   for (int i = 0; i < value.Length; i++) {
       char c = value[i];

       // Append the unhandled characters (that do not require special treament)
       // to the string builder when special characters are detected.
       if (c == '\r' || c == '\t' || c == '\"' || c == '\'' || c == '<' || c == '>' ||
           c == '\\' || c == '\n' || c == '\b' || c == '\f' || c < ' ') {
           if (b == null) {
               b = new StringBuilder(value.Length + 5);
           }

           if (count > 0) {
               b.Append(value, startIndex, count);
           }

           startIndex = i + 1;
           count = 0;
       }

       switch (c) {
           case '\r':
               b.Append("\\r");
               break;
           case '\t':
               b.Append("\\t");
               break;
           case '\"':
               b.Append("\\\"");
               break;
           case '\\':
               b.Append("\\\\");
               break;
           case '\n':
               b.Append("\\n");
               break;
           case '\b':
               b.Append("\\b");
               break;
           case '\f':
               b.Append("\\f");
               break;
           case '\'':
           case '>':
           case '<':
               AppendCharAsUnicode(b, c);
               break;
           default:
               if (c < ' ') {
                   AppendCharAsUnicode(b, c);
               } else {
                   count++;
               }
               break;
       }
   }

   if (b == null) {
       b.Append(value);
   }

   if (count > 0) {
       b.Append(value, startIndex, count);
   }

   return b.ToString();
}

引用自:https://stackoverflow.com/questions/2714546