2013-03-28 37 views

回答

-1

簡短的回答:您可以「T。 <%= %>塊中的代碼在服務器端進行評估,JavaScript代碼在客戶端進行評估。

長答案:您可以使用內聯C#代碼生成JavaScript代碼,這有時確實有道理。但這與從JavaScipt函數調用C#代碼不同。當然,你只能在.aspx/.cshtml等文件中執行此操作,而不能在.js文件中執行此操作,因爲這些文件只能作爲內容處理,而不能由ASP.NET解析。

[編輯]在你的情況沒有必要反正打擾,因爲你可以通過JS查詢字符串反正看到How can I get query string values in JavaScript?

[EDIT2]:當然有關JavaScriptSerializer對方的回答是absoultely正確關於安全。如果您使用Razor視圖引擎,事情會變得更加簡單和安全,因爲默認情況下它會轉義字符串。但就像我說的,在具體的情況下,沒有必要打擾任何一種方式。

+0

雖然你是正確的,但QueryString在客戶端是完全可調用的。無論它是在服務器還是客戶端上執行,該調用都會產生相同的(和期望的)結果。 – mattytommo 2013-03-28 10:51:18

+0

-1出於與上述相同的原因 – 2013-03-28 10:52:40

+0

@mattytommo你誤以爲QueryString在客戶端是完美可調用的。這是一個服務器功能。這樣的服務器功能調用的結果可能會以生成的一段javascript的形式傳遞給客戶端,正如該答案所述。 – James 2013-03-28 11:05:22

7

如果這段JavaScript代碼是內嵌在你的網頁表單的正確方法是使用一個javascript serializer

<script type="text/javascript"> 
    var str = <%= new JavaScriptSerializer().Serialize(Request.QueryString["val"]) %>; 
    alert(str); 
</script> 

決不做到以下幾點,這是完全不安全的,您的網站容易受到XSS注入攻擊:

<script type="text/javascript"> 
    var str = '<%= Request.QueryString["val"] %>'; 
    alert(str); 
</script> 
+0

很棒,安全第一:) – 2013-03-28 10:57:06

1

您可以直接使用JavaScript來完成。

隨着window.location.search你得到充分的queryString像?item1=val1&item2=val2

你可以使用一些像

window.location.search.substr(1)

,並使用獲得的查詢字符串.split('&')子字符串函數獲取de'val'鍵的值或另一個