c#
  • javascript
  • jquery
  • asp.net
  • 2012-03-03 98 views 4 likes 
    4

    我想改變一個隱藏的字段與JavaScript,然後使用我的代碼隱藏更改後的值。我在Page_Load中有一個斷點來檢查HiddenField1的值是否已更改,但在回發時它始終保持爲0。更改HiddenField的值與JavaScript不改變在C#代碼隱藏

    <script type="text/javascript"> 
         $(document).ready(function() { 
         var hiddenControl = '<%= HiddenField1.ClientID %>'; 
         var s = $('#cbox'); 
    
         $("#cbox").combobox({ 
          selected: function (event, ui) { 
           alert(s.val()); 
           document.getElementById(hiddenControl).value = s.val(); 
           alert(document.getElementById(hiddenControl).value); 
          } 
         }); 
        }); 
    
        <asp:HiddenField ID="HiddenField1" runat="server" EnableViewState="False" Value="0" /> 
    

    如果我不能得到這個工作是否有任何其他方法來傳遞javascript和c#codebehind之間的信息?

    +0

    這是頁面生命週期問題嗎?是否在Page_PreRender中更新了值? – Malk 2012-03-03 02:17:15

    +0

    值仍然是默認值0在Page_PreRender – 2012-03-03 02:57:13

    +0

    你可以發佈生成的html嗎? – shanabus 2012-03-03 03:15:48

    回答

    0

    檢查出HiddenField的MS文檔中的範例:

    Form1.HiddenField1.value = s.val(); 
    

    底本頁面 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx

    +0

    試過,但說Form1是未定義的。此外,我不認爲這很重要,因爲在問題代碼中,我通過ID引用它,並在文檔中搜索它。 – 2012-03-03 03:45:39

    +1

    表單ID是form1,但是有一個主頁面,因此可能會嵌套更多? – 2012-03-03 14:37:06

    +0

    有沒有可能這個領域甚至可能不在form1?你可以測試它通過將其設置爲服務器上的其他東西(並張貼回來) – shanabus 2012-03-03 16:30:14

    0

    嘗試使用HTML隱變量

    <input id="hdName" runat="server" type="hidden" /> 
    

    至於執行相同任務我們提供了runat =「server」,我們可以在服務器端訪問這個變量,在hdName.Value上我們可以獲得服務器端的值。我們認爲它是html控件,因此我們需要在javascript中提供hdName.ClientID,因爲我們已經給出了runat = server。

    document.getElementById('<%= hdName.ClientID %>').value 
    

    希望這會解決您的問題,並給你想要的結果。 謝謝

    +0

    與asp隱藏字段相同的結果 – 2012-03-03 14:24:59

    +0

    您可以從頁面源代碼中檢查控件的名稱,並在這裏分享html隱藏字段。 – 2012-03-05 08:44:42

    1

    您可能需要記下您的HiddenField的客戶端ClientID,然後在回發期間查看Request.Form收集服務器端的相應值。

    這樣您將檢查發送到服務器的值。 如果該值是正確的,可能因爲一些干擾ProcessPostData (手動復位或組織形式,例如動態變化)出現問題

    雖然這是很難不整個代碼給的意見,我同意那些說EnableViewState = false是令人驚訝的。

    0

    雖然你總是可以使用設置get方法來存儲從Java腳本... 的值,但這裏是解決它的一些簡單的方法...

    情況1 - 如果控制只是用於存儲目的,
    放置顯示:沒有它的樣式,並且在控件的屬性中使 visible = true。

    情況下2 - 如果控制是要顯示,但禁用模式把只讀=「真」,而不是

    eg.. 
    
        <asp:textbox runat="server" ID="textbox1" Enabled="false"></asp:textbox> will not work 
    
        <asp:textbox runat="server" ID="textbox2" ReadOnly="true"></asp:textbox> will work 
    
    0

    把UpdatePanel內的HiddenField,並使用HiddenField與客戶端ID。

    0

    我的答案類似於其他人說的獲取隱藏變量/控件,可以傳回服務器端代碼後面,如按鈕事件或Page_Load等。我從他們那裏得到了這個想法。但這裏是:

    <asp:TextBox ID="hdnErrorMsg" ClientIDMode="Static" style="display: none;" runat="server"/> 
    

    這可以在JavaScript中設置,它將返回到服務器端Asp.NET並使用和檢查。如果你想在它回到客戶端時保存它,你可能必須把它和所有其他你需要的東西放回去。在我的情況下,這是一個錯誤消息。我希望它停止在用於保存和退出的ASP.NET按鈕單擊事件中,但我需要將錯誤的東西放回來,以便當它返回到客戶端時它將再次出現。

    相關問題