2015-02-06 38 views
0

我試圖從.net代碼隱藏執行觸發器。 通常會發生的是,您單擊突出顯示選項卡的選項卡,然後執行一些JavaScript以使某些div可見。執行從.net代碼隱藏的JavaScript觸發器

目前,我寫的代碼將突出顯示選項卡,但divs不可見。

if (Request.QueryString["ID"] == "56") 
     { 
      ltrClassName.Text = "active"; 

      StringBuilder jscript = new StringBuilder(); 
      jscript.Append("<script type=\"text/javascript\">$(document).ready(function PremiumServicesClick() {"); 
      jscript.Append("$('#PremiumServicesTab').trigger('click');"); 
      jscript.Append("})"); 
      jscript.Append("</script>"); 
     } 
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "0", "PremiumServicesClick()", true); 

我有這個代碼在Page_Load事件中運行。

+0

在第三次Append()調用中,}}後面缺少分號。 – itsme86 2015-02-06 18:42:27

+2

你對'jscript' StringBuilder中建立的字符串做了什麼嗎? – MatthewG 2015-02-06 18:44:45

+0

另外,請確保#PremiumServicesTab是真實ID。如果PremiumServicesTab是Sever端控件,則需要PremiumServicesTab.ClientID(C#)。 Register腳本必須註冊整個jscript字符串,否則它不會寫入響應。 – MatthewMartin 2015-02-06 22:36:39

回答

0

您應該在JavaScript中處理該點擊事件客戶端,而不是服務器端。 如果你真的必須做回發,你可以在.aspx文件中加入一些代碼,它根據需要設置html元素所需的屬性。

如果您的選項卡和/或div屬於服務器端控件,那麼肯定可以相應地編輯這些控件的屬性。

編輯(請求的示例):

<div style="height:100px; width:100px; <%=Page.IsPostBack ? "background-color: red;" : "" %>"> 

</div> 

上面的代碼的色彩的div成紅僅當頁面負載由回發而引起的。當然,你可以用適合你的任何東西和你添加/替換的屬性來替換條件。這樣,你的html受到服務器端變量的限制(無論你想要什麼,但是你想要的)。

+0

由於cms的限制,這需要在服務器端完成 - 此代碼需要根據querystring參數自動執行。請提供一個'您可以在.aspx文件中放置一些代碼的示例,該文件根據需要將所需的屬性設置爲html元素' – Freq 2015-02-06 19:36:37

+0

作爲代碼示例的額外提示,在條件中,您還可以檢查發佈的參數(如果你需要知道一些價值已經改變) – 2015-02-06 20:03:10

+0

不知道我是否足夠清楚地說明我的想法,但我發現發送一些html到客戶端的想法以及如何修改它的說明(JavaScript)a沒有意義,當你可以發送給他正確的HTML格式。 – 2015-02-06 20:09:06