如何在HttpModule的Begin Request中获取EventTarget

时间:2014-04-23 19:29:01

标签: asp.net webforms httpmodule

我正在为我们的asp.net表单应用程序编写一些自定义日志记录,并且我能够获取请求的URL,但是在帖子后面,我希望得到像__EVENTTARGET这样的内容来识别产生回传的控件/按钮。

我以为我可以使用Request.Form [“__ EVENTTARGET”],但在开始请求事件中,这会在回发后设置为空字符串。

关于如何在回发中获取此信息的任何想法?或者我必须等到结束请求才能检索此信息?

1 个答案:

答案 0 :(得分:0)

好的,因为这对任何人来说似乎都不是一个有趣的问题,

我终于弄清楚为什么__EventTarget不在Request.Form []字典中。 asp按钮不使用_dopostback提交。而是执行标准表单提交,并将Request.Form []字典中的按钮ID作为字段发送。

幸运的是我们的系统,所有按钮始终以" btn"所以我可以确定哪个按钮导致了提交。这是我提出的基本代码:

 if (request.HttpMethod == "POST")
            {
                potentialTarget = request.Form["__EVENTTARGET"];
                if (string.IsNullOrWhiteSpace(potentialTarget))
                {
                    foreach (string ctrlName in request.Form)
                    {
                        if (!ctrlName.ToLower().Contains("$btn")) 
                            continue;
                        potentialTarget = ctrlName;
                        break;
                    }
                }
            }