簡體   English   中英

使用Javascript更改HiddenField值不會改變C#代碼隱藏

[英]Changing HiddenField value with Javascript not changing in C# codebehind

我正在嘗試使用javascript更改隱藏字段,然后在我的代碼隱藏中使用該更改的值。 我在Page_Load中有一個斷點來檢查HiddenField1的值是否已經改變但是在回發時它總是保持為0。

    <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之間的信息?

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

這樣您將檢查發送到服務器的值。 如果值正確,可能會出現問題,因為某些事情擾亂了ProcessPostData(例如手動重置或表單組織的動態更改)

雖然很難在沒有完整代碼的情況下給出建議,但我同意那些說EnableViewState = false令人驚訝的人。

雖然你總是可以使用set get方法來存儲java腳本中的值...但是這里有一些簡單的方法來解決它...

案例1 - 如果控制僅用於存儲目的,
將display:none放在它的樣式中,並在控件的屬性中使visible = true。

情況2 - 如果要顯示控制但是在禁用模式下放入ReadOnly =“true”而不是

   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

將您的HiddenField放在UpdatePanel中,並將HiddenField與ClientID一起使用。

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

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

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

查看HiddenField的MS文檔中的示例:

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

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

嘗試使用html隱藏變量執行相同的任務

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

由於我們提供了runat =“server”,我們將能夠在服務器端和hdName.Value上訪問此變量,我們可以在服務器端獲取該值。 認為這是html控件我們需要在javascript中提供hdName.ClientID,因為我們已經給出了runat = server。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM