C# 如何在代码隐藏中获取回发参数值
我正在aspx页面中触发回发事件,如下所示:C# 如何在代码隐藏中获取回发参数值,c#,asp.net,C#,Asp.net,我正在aspx页面中触发回发事件,如下所示: __doPostBack('AddNewEmployeeType', "empl", "sick"); 代码隐藏: string val = Request.Params.Get("__EVENTTARGET"); 通过上面的代码,我只能得到一个第一个值,但我的目的是得到所有三个参数值。如何实现这一点?使用\uu EVENTARGUMENT: string parameter = Request["__EVENTARGUMENT"]; stri
__doPostBack('AddNewEmployeeType', "empl", "sick");
代码隐藏:
string val = Request.Params.Get("__EVENTTARGET");
通过上面的代码,我只能得到一个第一个值,但我的目的是得到所有三个参数值。如何实现这一点?使用
\uu EVENTARGUMENT
:
string parameter = Request["__EVENTARGUMENT"];
string val = Request.Params.Get("__EVENTTARGET"); // AddNewEmployeeType
如果需要将多个参数传递回codebehind,则需要自己用分隔符将其拆分。例如,您可以使用管道|
:
__doPostBack('AddNewEmployeeType', "empl|sick");
在代码背后:
string parameter = Request["__EVENTARGUMENT"];
string[] allParams = parameter.Split('|');
从技术上讲,您对doPostBack的调用是不正确的。如果检查ASP.NET页面的源代码,您将看到以下函数:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
注意,它只有2个参数。如果需要传递更多值,则需要将它们填充到eventArgument参数中
如何做到这一点取决于您-使用逗号分隔列表或JSON,或任何适合您的方法,并在服务器上解析此值(通过访问请求[“\u EVENTARGUMENT”]
)
回发邮件不应该这样处理。如果控件正在引发回发,并且是用户控件,则应实现IPostBackDataHandler
。您应该为它分配一个EventHandler
,即使它是自定义的
工具书类
我仍然只能得到一个参数。问题未解决。当仅使用一个参数调用
\uuu doPostBack
函数时,\uu EVENTARGUMENT
中的值可能类似于“未定义”。这取决于浏览器。当请求不需要数据时,我建议发送一个空字符串作为第二个参数。