2011-09-16 56 views
2

我經常在我的asp.net應用程序的代碼隱藏部分編寫客戶端代碼。我認爲是時候想了解如何在服務器端頁面上編寫客戶端代碼。從asp.net中的代碼爲客戶端編碼

我需要刷新mysel fwith「雙引號」和「單引號」。不知道是什麼叫,但任何人都可以指向正確的資源,我可以瞭解報價和雙引號。

回答

5

編寫JavaScript代碼,打算在客戶端上運行,在服務器上是簡單的說:壞,錯,要避免。

你應該更喜歡把你的javascript函數寫在單獨的js文件中,並且只能從服務器調用它們。這樣做的好處是您不必再擔心單引號,雙引號和三引號,您的js將被緩存,縮小,壓縮,從CDN提供服務,優化,...混合服務器端語言的最終結果,例如因爲使用javascript的C#/ VB.NET只是難以維護代碼。

現在到了。當你需要從服務器調用一些JavaScript函數,並且你需要傳遞一些參數以便不用擔心引號和內容時,我會建議你將JSON序列化爲你的服務器端對象,並將它傳遞給客戶端函數。

讓我們舉一個例子。假設你已經寫這需要一些參數的函數:

function foo(myModel) { 
    alert(myModel.Prop1 + ' | ' + myModel.Prop2); 
} 

,現在你要調用從服務器上這個功能,這裏是如何進行的:

var model = new 
{ 
    Prop1 = @"some value that can contain ', \, "", anything you like to throw it in, etc..", 
    Prop2 = "some other value" 
}; 
var json = new JavaScriptSerializer().Serialize(model); 
var script = string.Format("foo({0});", json); 
ClientScript.RegisterStartupScript(GetType(), "foo", script, true); 

現在您不再需要擔心關於任何引號和轉義。無論你在這些屬性中拋出什麼值,它們在調用javascript函數時都會被正確地序列化。

+1

我會爭辯說,「在服務器上編寫javascript是爲了簡單:不好,錯誤,要避免」是非常非常不正確的,我認爲大多數使用Node.js的開發人員都會同意。這就是說,這是在.Net中使用JS時的一個好方法。 – cdeszaq

+0

@cdeszaq,哦,夥計,你明白我的意思。好的,好的,會解決的。 –

+0

是的,我知道你是什麼意思,但是從來沒有像這樣鍛鍊毛毯語句,尤其是對於編程;)總有一個邊緣案例! – cdeszaq

相關問題