2015-12-09 45 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