我有2个按钮控件。当我点击一个我试图确定哪一个导致页面加载回发。该如何确定?
答案 0 :(得分:3)
使用CommandName和CommandArgument如何在this example中显示。这样你就可以只有一个处理程序。
<asp:Button id="Button1"
Text="Sort Ascending"
CommandName="Sort"
CommandArgument="Ascending"
OnCommand="CommandBtn_Click"
runat="server"/>
<asp:Button id="Button2"
Text="Sort Descending"
CommandName="Sort"
CommandArgument="Descending"
OnCommand="CommandBtn_Click"
runat="server"/>
答案 1 :(得分:2)
您来自经典ASP背景吗?当我第一次使用ASP.NET时,我遇到了同样的问题。
考虑另一种方法:
不是在Form_Load中检测回发,而是找出触发它的内容,而是为每个按钮创建一个特定的事件处理程序。这是Web窗体的重点 - 因此您可以使用与Windows应用程序非常相似的方式开发应用程序。
答案 2 :(得分:1)
使用type按钮真正输入会在post请求中发送其值。例如,如果您已经进入Post按钮名称= Quote,就像它的简单文本输入一样。因此,您可以使用以下代码(对不起我的vb)检查帖子是否包含按钮的值:
Dim isQuote As Boolean = HttpContext.Current.Request.Form(SubmitQuote.UniqueID) IsNot Nothing
所以,如果它不是 Nothing (null),那么就会通过SubmitQuote按钮发送帖子。
BTW对我来说HttpContext.Current.Request(&#34; __ EVENTTARGET&#34;)也没有用。
答案 3 :(得分:1)
在我的实现中,我的页面上有几个表单;如果某些按钮控件触发了回发操作,则需要进一步操作。
控件属于以下类型,不会填充Request["__EVENTTARGET"]
我通过检查控件的UniqueID
是否已传递到Page_Load
sub中的表单请求来确定以下按钮控件是否启动了回发:
- ASP.NET:
<asp:Button ID="Button1" runat="server" />
<asp:Button ID="Button2" runat="server" />
为了简单地处理以下嵌套图像按钮是否发起了回发,我利用调用javascript函数的OnClientClick
属性,该函数将使用{{1来填充补充隐藏字段控件的值启动控件,然后在UniqueID
sub:
Page_Lode
- ASP.NET:
<script type="text/javascript">
function SetSource(SourceID) {
var hiddenField = document.getElementById("<%=HiddenField1.ClientID%>");
hiddenField.value = SourceID;
}
</script>
<asp:HiddenField ID="HiddenField1" runat="server" Value="" />
<asp:ImageButton ID="ImageButton1" runat="server" OnClientClick="SetSource(this.id)" />
然后通过某种方式实现:
Page_Load
答案 4 :(得分:0)
检查此
String ButtonID = Request["__EVENTTARGET"];