2011-05-09 83 views
1

我需要使用JavaScript函數來顯示和隱藏我的頁面上的元素,但從C#方法中調用它。這可能嗎?從C調用JavaScript#

編輯:我試過的RegisterStartupScript(見下文),但這並不能掩蓋的元素,因爲我所希望的:

HidePopup("CompanyHQSetup", "$('#<%=DivDataProvider.ClientID %>').hide();$('#<%=modalOverlay.ClientID %>').hide();"); 

private void HidePopup(string Key, string jscript) 
    { 
     string str = ""; 
     str += "<script language='javascript'>"; 
     str += jscript; 
     str += "</script>"; 
     RegisterStartupScript(Key, jscript); 
    } 

編輯:使用隱藏域布爾值,以確定是否要隱藏解決此得到或顯示元素

回答

5

是的,請查看RegisterClientScriptBlock

下面是該鏈接取一個片段:

public void Page_Load(Object sender, EventArgs e) 
    { 
    // Define the name and type of the client script on the page. 
    String csName = "ButtonClickScript"; 
    Type csType = this.GetType(); 

    // Get a ClientScriptManager reference from the Page class. 
    ClientScriptManager cs = Page.ClientScript; 

    // Check to see if the client script is already registered. 
    if (!cs.IsClientScriptBlockRegistered(csType, csName)) 
    { 
     StringBuilder csText = new StringBuilder(); 
     csText.Append("<script type=\"text/javascript\"> function DoClick() {"); 
     csText.Append("Form1.Message.value='Text from client script.'} </"); 
     csText.Append("script>"); 
     cs.RegisterClientScriptBlock(csType, csName, csText.ToString()); 
    } 
    } 
1

一個是服務器端,另一個是客戶端。他們可以將變量傳遞給對方(Javascript到ASP將通過form/querystring/cookies和ASP到JS通過response.writing變量完成),但它們不能直接交互。

0

Javascript是客戶端,c#是服務器端。你不能直接從C#調用JavaScript。不過,看看Comet,它會告訴你如何將數據從HTTP服務器推送到網頁。