2014-02-24 20 views
2

好的,我知道這個問題已經被問了很多,我在網上發現了很多關於此的信息。不幸的是,它似乎沒有一個真正爲我工作。從YouTube發射回發

基本上,我有一些JavaScript響應用戶事件而運行。 JavaScript獲得了一些信息(一個int),然後我想將它返回給服務器。

第一種方法是使用Page.ClientScript.GetPostBackEventReference獲得__DoPostBack()的有效呼叫,如here所述。

我用這個方法觸發一個按鈕的回發。這似乎是工作,除了我得到的錯誤:

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

接下來,我試圖用一個HiddenField的ValueChanged事件處理程序。我寫了我的處理程序,但更改隱藏字段的值不會觸發事件。某種形式的回傳仍然需要以某種方式觸發。

我真的不明白爲什麼我會遇到這麼多麻煩。有沒有更直接的方式來做我所需要的?

回答

0

哇,沒有答案。誰會認爲這是如此晦澀難懂。

無論如何,這是我的工作。我只是用ValueChanged事件的服務器端處理程序向我的表單添加了ASP.NET HiddenField。

<asp:HiddenField ID="MyHidden" runat="server" OnValueChanged="MyHidden_ValueChanged" /> 

然後,爲了響應用戶操作,我的JavaScript設置了此隱藏字段的值。

$('#<%= MyHidden.ClientID %>').val(myData); 

最後,以觸發隱藏字段的ValueChanged事件,我開始用下面的代碼回發。 GetPostBackEventReference()返回一個JavaScript語句,它將替換服務器端標記。

<%= Page.ClientScript.GetPostBackEventReference(MyHidden, String.Empty) %>; 

而且它似乎工作得很好。回發發生,並且我的ValueChanged處理程序被調用。該處理程序確定隱藏字段的值並執行所需的操作。