2014-04-08 157 views
0

我已經將自己編碼到了一個角落,我接觸到的建議似乎沒有幫助。將JavaScript值傳遞給C#代碼

總結:我有一個模式,它接受加載事件頁面中的序列化變量,並通過從aspx頁面上的div模板構建的javascript函數傳遞。問題是有一個ASP:在C#中調用onclick事件的模板中的LinkBut​​ton。我需要能夠將我在模式中訪問的一些信息傳遞給C#中的onclick函數。

我試過使用隱藏變量,但我似乎無法讓它們在onclick上的Javascript中更改。

下面是一個的ContentTemplate鏈接和隱藏字段,所有的(我有兩個,ASP和HTML,一直在努力都):

<asp:LinkButton ID="lnkbtnProceedChangeStatus" runat="server" OnClick="ProceedChangeStatus_Click" CommandArgument="">Yes, proceed</asp:LinkButton> 
<asp:Hiddenfield ID="hiddenInputField" value="test2" runat="server"/> 
<input type="hidden" name="hiddenInputFieldHTML" id="CurrentlySelectedBatchID" value="test1" runat="server"/> 

我嘗試用它來改變隱變量,

document.getElementById('<%= hiddenInputField.ClientID %>').value = "test123"; 

然後

string s = hiddenInputField.Value; 
string t = hiddenInputFieldHTML.Value; 

,試圖將其拉出代碼隱藏,但他們從來沒有改變˚F rom默認值。

+0

JavaScript代碼肯定應該更新'hidden'輸入。在您有機會使用它的服務器端之前,該輸入的新值是否被'Page_Load'中的默認值覆蓋? – David

+0

請檢查您是否將ClientIdMode = static設置爲頁面,以便JavaScript代碼可以根據ID找到元素。 –

+0

當然另一種選擇是使用AJAX調用Web服務並繞過表單發佈。 – Hogan

回答

0

<asp:HiddenField>將始終正常工作,並且您指示的方法將改變它。這個問題可能是你打電話給它的地方,要麼是永遠不會打電話,要麼是在設置頁面時發回頁面,因此它永遠不會被調用,因爲頁面回發太快......

+0

看起來就是這樣。我原本就有一個內容模板,因爲那是onlick按鈕的位置,所以我將它移出來,現在它傳遞的很好。謝謝! – user3486740

1

As @Brian Mains states ,你的方法是正確的,應該工作。

我有一個similar problem當使用jQuery UI,事實證明是在DOM中操作表單的方式。如果您的對話框是jQuery UI,那麼解決方案可能如此簡單:

$('#some-dialog').dialog({ 
    closeOnEscape: true, 
    open: function(event, ui) { 
     $(this).parent().appendTo("form"); //this line sorted everything! 
    } 
});