Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在代码隐藏中获取回发参数值_C#_Asp.net - Fatal编程技术网

C# 如何在代码隐藏中获取回发参数值

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

我正在aspx页面中触发回发事件,如下所示:

__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
中的值可能类似于“未定义”。这取决于浏览器。当请求不需要数据时,我建议发送一个空字符串作为第二个参数。