2012-02-16 77 views
0

我有一個ASP.NET用戶控件,我想寫一些動態JavaScript(基本上是一個JQuery調用來打開一個手風琴節點)。ASP.NET,ScriptManager,歷史點和動態的Javascript

使問題複雜化,我使用歷史點。簡而言之,我需要根據存儲在URL中的歷史點數據中的值打開JQueryUI手風琴。

我已經設置了設置歷史點的部分,並且可以在瀏覽歷史記錄時瀏覽我的代碼(下面)。問題是,在這個例子中,我的腳本從不在頁面上呈現。

protected void uxScriptManager_OnNavigate(Object sender, HistoryEventArgs e) 
    { 
     if(!String.IsNullOrEmpty(e.State["activeTab"])) 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "xScript", "alert('Hello,world!');", true); 
     } 
    } 

我做錯了什麼?

附錄

我一直在修修補補,而且好像我的電話註冊clientscriptblock工作在其他事件罰款...但在導航事件的ScriptManager的,我不能寫新腳本進入頁面。我在想什麼,我試圖做的是不可能的...

+0

問題類似於http://stackoverflow.com/questions/9278466/html-elements-hiding-after-asp-button-click – 2012-02-16 23:20:57

回答

0

它看起來像你需要通過調用ScriptManager.RegisterStartupScript方法來顯示頁面上的元素添加腳本:

ScriptManager.RegisterStartupScript(對此,this.GetType(),this.ID, 「」 警報( '你好,世界!');」,真);

+0

你好伊萬。我嘗試過 - 但是似乎發生的事情是Navigate事件,我無法將新的腳本塊添加到頁面中。我認爲這是因爲頁面正在被讀出歷史記錄,而不是完全重新呈現。服務器端調用工作正常,但在這種特殊情況下,我需要掛在客戶端腳本中,而且看起來不可能。 (如果我將該腳本的相同代碼塊移動到另一個事件,則它可以正常工作) – Tim 2012-02-17 13:30:20

1

從我發現,它看起來並不像它的可能在Navigate事件中寫入新的客戶端腳本到頁面 - 或者更改現有腳本塊中的值 - 我注意到這一點,以防其他人試圖做同樣的事情ING。

修正

我發現它可以做我想做的!

  • 我需要設置歷史點在頁面生命週期
  • 我需要設置動態腳本中的RegisterStartupScript方法頁面

(伊萬的帖子指出的早期部分我在正確的方向,所以我已經標記他的帖子作爲答案)