如何在页面加载时检查是否单击了ASP.NET按钮
如何检查ASP.NET中是否单击了某个特定按钮?
我想我需要在Page_Load
上执行一些操作。 这不应该进入要查找的Button_Click
事件。 有什么方法可以找到客户端点击或不点击它的位置并将其带到Page_Load
?
我遇到了同样的麻烦,必须在Page_Load方法中做一些逻辑判断来处理不同的事件(点击了哪个按钮)。 我意识到arm得到如下例子。 前端aspx源代码(我有许多ID为F2,F3,F6,F12的按钮。
后端aspx.cs源代码,我需要做的是判断触发Page_Load时点击了哪个按钮。 这似乎有点愚蠢,但有效。 在您的情况下,单击按钮将添加到dic中。 我希望这对某些人有所帮助。
Dictionary dic = new Dictionary(); foreach(var id in new string[]{"F2","F3","F6","F12"}) { foreach (var key in Request.Params.AllKeys) { if (key != null && key.ToString().Contains(id)) dic.Add(id, Request[key.ToString()].ToString()); } }
背景:基本上__EVENTTARGET
和__EVENTARGUMENT
,当任何Web控件的任何autopostback属性设置为true时,这两个隐藏控件都会添加到HTML源代码中。
__EVENTTARGET
隐藏变量将告诉服务器,哪个控件实际上执行了服务器端事件触发,以便框架可以为该控件触发服务器端事件。
__ EVENTARGUMENT
变量用于在应用程序需要时提供其他事件信息,可以在服务器中访问。
因此,我们可以使用以下命令轻松获取控件导致回发: Request.Params.Get("__EVENTTARGET");
问题:
方法: Request.Params.Get("__EVENTTARGET");
将适用于CheckBoxes
, DropDownLists
, LinkButtons
等。但这不适用于Button控件,如Buttons
和ImageButtons
Button
控件和ImageButton
控件不会调用__doPostBack
函数。 因此, _EVENTTARGET
将始终为空。 但是,其他控件使用javascript函数__doPostBack
来触发回发。
所以,我建议做一些如下的事情。 将OnClientClick
属性添加到按钮。 另外,在Markup中定义一个hiddenField,其值将包含导致回发的实际按钮。
在Button
和ImageButton
的OnClientClick
属性上调用SetSource
JavaScript函数
在此之前,您可以非常轻松地在Page_Load
检查哪个Control导致回发:
if (IsPostBack) { string CtrlName; CtrlName=hidSourceID.Value; }
按钮的UniqueID将在Request.Form [“__ EVENTTARGET”]中
这个问题已在以下答案得到解答: ASP.NET:检查page_load中的click事件
您可以尝试使用隐藏字段。 在OnclientClick事件上创建客户端事件并尝试设置隐藏字段的值,可能是true或false,具体取决于条件。 在页面加载时,您可以检查Hiidden字段的值。
function click() { // set the hidden field here }
在页面加载时,只需检查值。
if(HiddenFieldName.Value=="true") { //perform the action }
private bool button1WasClicked = false; private void button1_Click(object sender, EventArgs e) { button1WasClicked = true; } if ( button1WasClicked== false) { //do somthing }