2015-12-09 65 views
2

我在ASP.net頁面上有一組選項,用戶可以在其中打開兩個燈箱中的一個 - 「添加」燈箱或「編輯」燈箱。Asp.net按鈕觸發其他按鈕的事件

每個人都有一個小表格供用戶填寫,然後他們可以點擊燈箱底部的按鈕來點擊提交。

我已經設置了燈箱內,像這樣的按鈕:

<asp:Button Id="btnSubmitAdd" runat="server" Text="Submit" OnClick="btnSubmitAdd_Click" /> 

...再後來在其他收藏夾......

<asp:Button Id="btnSubmitEdit" runat="server" Text="Submit" OnClick="btnSubmitEdit_Click" /> 

當我點擊「添加」收藏夾的提交按鈕,一切都表現得很好。

當我點擊「編輯」燈箱的提交按鈕,但它會觸發「btnSubmitAdd_Click」而不是它自己的「... Edit_Click」事件!

我已檢查並重新檢查所有名稱和事件,並且所有設置都正確。任何人有任何想法,爲什麼發生這種情況?

+2

你相比呈現的HTML結果到那裏檢查區別在哪裏?你的ASP.NET標記看起來很好;你有沒有檢查過'btnSubmitEdit.OnClick'在代碼隱藏方面是否接線不同? –

+0

這讓我想起[問題](https://stackoverflow.com/questions/31417302/asp-net-literal-text-values-contained-in-ajax-accordion-migrating-south-for-the)我有一會兒回來... 嘗試在編輯後添加另一個按鈕,看看是否點擊它觸發編輯事件。不需要其OnClick值。 – abluejelly

+0

@MikeGuthrie - 事件連接正確,是的。現在我注意到,呈現的HTML顯示「type =」submit「」,我期望看到更像「type =」button「」的東西。我正在調查這種差異現在意味着什麼...... –

回答

5

感謝@MikeGuthrie帶領我走下正確的道路!

這個問題似乎與asp.net默認按鈕鍵入提交整個表單的「提交」,顯然這意味着它只是在第二個按鈕之前點擊第一個按鈕的事件。

我說已經修改了,像這樣的按鈕,事情現在正在努力:

<asp:Button Id="btnSubmitAdd" runat="server" Text="Submit" OnClick="btnSubmitAdd_Click" UseSubmitBehavior="false"/> 

<asp:Button Id="btnSubmitEdit" runat="server" Text="Submit" OnClick="btnSubmitEdit_Click" UseSubmitBehavior="false"/> 
+0

不會說謊,修正它的原因暗示了我。默認情況下,在HTML中提交'submit'輸入提交整個表單,是的,但只有按下的提交按鈕的'name:value'被保留(不包括所有提交按鈕)。所以服務器應該仍然能夠找出實際需要觸發的事件。編輯:看看差異,關閉USB通過js提交,它附加事件目標。只提交不。 – abluejelly

+0

@abluejelly - 或許有人比我有更好的理解能解釋。我所知道的是我讀過的(我把它寫在我的答案中),現在它可以工作。它可能會以一種新的,更具欺騙性的方式被打破!我有傾向於用有趣的方式打破事情。 –

+0

在我看來是由ASP_OnClick事件引發的基於'__EVENTTARGET'傳遞的數據。基礎提交不會將其設置爲「'''以外的其他內容,因此您必須關閉用於asp的UseSubmitBehavior屬性才能使用js提交,這將附加一個有意義的值。至於爲什麼ASP選擇不使用提交按鈕時自然的'name:value''功能'......這是真正的問題。 – abluejelly