2013-05-05 45 views
-1

我有一個鏈接按鈕,點擊時調用c#函數'send_Click'。這裏是功能:更改隱藏字段的值而不回發

void send_Click(object sender, EventArgs e) 
    {   
     Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "text_alert()", true); 
     Response.Write(hidAcrobat.Value); 
    } 

,你可以看到,它調用javascript函數「text_alert()」,它看起來是這樣的:

function text_alert() { 
      var person = prompt("Additional Comments:", ""); 
      if (person != null && person != "") { 
       document.getElementById('hidAcrobat').value = person; 
      } 
     } 

,彈出一個提示框接受用戶輸入和設置隱藏字段'hidAcrobat'的值爲該值。

然後回到c#,下一行是Response.write(hidAcrobat.Value); 它寫入hidAcrobat的默認值,而不是在提示框中分配給它的新值。 我假定它是因爲該頁面沒有回發, 我該如何解決這個問題?

+0

你將不得不瞭解客戶端和服務器端的區別。你正在改變的價值是在客戶端。所以在服務器端腳本中存在的變量的值不會改變,直到您使用POST BACK或使用AJAX來更改該變量爲止 – 2013-05-05 17:22:47

+0

我怎樣才能做到這一點?謝謝 – 2013-05-05 17:33:36

+0

你可以請給出你使用這個實際案例。我不明白你爲什麼要做response.write()當你已經有了客戶端變量的值 – 2013-05-05 17:34:55

回答

0

處理客戶端鏈接按鈕的onclick事件(使用javascript)並從處理程序中調用text_alert()方法。

執行客戶端事件處理程序後,頁面回到服務器端,您可以像在send_Click事件處理程序中那樣訪問隱藏變量。

+0

如何在客戶端處理onclick事件如果按鈕是在c#中動態創建的? – 2013-05-05 19:34:47

0

你可以容易使用ModalPopUp創建類似效果的提示,然後輕鬆獲取服務器端的值。

1

這是很容易的jQuery實現就像那個

<script type="text/javascript" language="javascript"> 

    $(document).ready(function() { 

     $('#MainContent_lnkAddToList').live("click", function() { 
      var person = prompt("Additional Comments:", ""); 
      $('[id*="hidAcrobat"]').val(person); 
     }); 
    }); 

這之後,你可以在任何服務器端事件中使用你的隱藏字段值。

jQuery的補充參考

希望它可以幫助你。