2011-07-12 67 views
0

請讓我問一些問題。我只是困惑了javascript,JQuery和代碼背後的屬性的區別。 例如: ASPX腳本和代碼背後的差異?

<tbody id="toggleSup" runat="server"> 

C#

toggleSup.Visible = false; 

----------------------------- ---------- --------------------------- OR

C#

CallScript((string)(Session["toggle"])); 

private void CallScript(string str) 
    { 
     string scriptx = "<SCRIPT LANGUAGE='javascript'>"; 
     scriptx += "toggle('" + str + "');"; 
     scriptx += "</script>"; 

     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scriptx", scriptx, false); 
    } 

腳本

function toggle(para1) {   
     if (para1 == 0) { 
      $('#toggleSup').hide(); 
     } 
     else { 
      $('#togglePO').hide(); 
     } 
    } 

對於這兩個不同的東西,大部分開發人員都使用腳本。爲什麼?實際上C#代碼只有一行。不同的是,如果我使用腳本,不需要使用runat =「server」,但如果我使用後面的代碼,則需要使用runat =「server」。所以我認爲可能有一定的優勢。請給我解釋一下,如果可能的話...

感謝

+1

注意:JQuery *是* JavaScript。爲了您的問題的目的,沒有必要區分這兩者。 – nnnnnn

+0

是的。我的意思是JavaScript/JQuery和代碼背後的區別。對不起,沒有清除問題 – CMMaung

回答

2

如果您在C#中說toggleSup.Visible = false;,那麼toggleSup甚至不會呈現給DOM。這意味着它不在頁面上。如果您希望通過頁面上的某個操作使該元素可見,那麼您必須往返服務器並重新呈現頁面的所有(回發)或部分(ajax)。

或者,如果允許使用JavaScript(本例中爲jQuery)操作toggleSub控件,那麼它是DOM的一部分,可以響應頁面上的其他事件而採取行動。主要是,這意味着客戶端瀏覽器可以在不向服務器請求更多HTML的情況下執行操作。

因此,C#方法看起來更簡單,但如果您需要豐富的客戶端體驗,則jQuery方法更加靈活。

+0

哇!真的很喜歡答案!所以有時我得到了錯誤,當我使用jQuery,但我知道爲什麼。請檢查我的問題,我使用腳本和C#調用,但實際上沒有工作。如果我將這些腳本更改爲document.ready。這很好,爲什麼? – CMMaung

+0

嗯,試試這個......改變這行'scriptx + =「toggle('」+ str +「');」;'對此:'scriptx + =「$(document).ready(function(){toggle (''+ str +'')});「;'。我懷疑你的toggle方法是在你的clientscriptblock之後呈現的,所以'toggle()'在調用時並不總是可用的。 – mattmc3

+0

:)仍然不能,實際上我調用了這樣的腳本 'protected void Page_Load(object sender,EventArgs e) {「toggle」] =「1」; (字符串)(Session [「toggle」])); if(!IsPostBack) { }}'from page_Load – CMMaung

1

當使用「腳本」,瀏覽器執行的工作。使用runat服務器時,瀏覽器必須獲取/發佈HTTP請求或對服務器執行「AJAX」。

使用「腳本」更快,更容易維護狀態。

+1

嚴重依賴於此意圖。你假設這是一個回傳,而不僅僅是最初的頁面加載。如果我們主要關注後者,則比服務器端腳本更高效。 – riwalk

+0

@Richard Schneider 感謝您的回答。但如果我使用腳本,仍然需要從代碼背後調用,禮儀?私人無用的東西是這樣的... – CMMaung

1

簡而言之,Java腳本和JQuery代碼在客戶端瀏覽器上運行,而C#代碼在服務器上運行。