通过javascript编程设置请求[quot;__EVENTTARGET"]
Programmatically set Request["__EVENTTARGET"] from javascript
我正在编写ASP.NET应用程序,应该检查Page_Load
中Request["__EVENTTARGET"]
的服务器端值。我需要从客户端编程设置它的值。我试着这样设置:
document.getElementById('__EVENTTARGET').value = "my_value";
但它不起作用。你能帮我吗,为什么?非常感谢。
UPD:
function ShowUploadDialog(obj) {
document.getElementById('<%= uplReportLogo.ClientID %>').click();
document.getElementById('<%= hdnInvokeFileUpload.ClientID %>').value = $('input[type=file]').val();
__doPostBack(obj.id, 'Click');
}
服务器控制:
<asp:FileUpload runat="server" ID="uplReportLogo" CssClass="file upload" />
<asp:Button runat="server" ID="btnReportImage" Text="Load Image..." CssClass="button action load"
OnClientClick="javascript: return ShowUploadDialog(event, this);" OnClick="btnReportImage_Click" />
UPD2:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
我在theForm.submit();
行有"拒绝访问"异常,为什么?
ASP.NET使用该变量来存储任何回发的sender
,因此我认为每次都会覆盖您的值。您可以尝试调用
__doPostBack('my_value','any_other_argument')
然后在Page_Load
事件中检查该值。
要使其工作,请确保删除ASPX文件第一行中的EventValidation
属性。
这就是你如何在代码背后处理它:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string _evt = this.Request["__EVENTTARGET"]; // 1st parameter
string _eva = this.Request["__EVENTARGUMENT"]; // 2nd parameter
switch (_evt)
{
case "my_value":
//do anything here
break;
default:
break;
}
}
}
编辑:
按照您的示例进行编辑:
JS:
function ShowUploadDialog() {
document.getElementById('<%= uplReportLogo.ClientID %>').click();
document.getElementById('<%= hdnInvokeFileUpload.ClientID %>').value = $('input[type=file]').val();
__doPostBack('fileUpload', '');
}
ASPX:
<asp:Button runat="server" ID="btnReportImage" Text="Load Image..." CssClass="button action load"
OnClientClick="ShowUploadDialog();" />
CS:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string _evt = this.Request["__EVENTTARGET"]; // 1st parameter
string _eva = this.Request["__EVENTARGUMENT"]; // 2nd parameter
switch (_evt)
{
case "fileUpload":
btnReportImage_Click();
break;
default:
break;
}
}
}
protected void btnReportImage_Click() // remove sender & event arguments here, you do not need them
{
//your code
}
由于拒绝访问错误,表单无法提交,您只需要覆盖框架生成的函数并处理异常,直到表单未提交,只需继续调用此函数即可。我遇到了同样的问题,现在已经解决了。在您的页面上添加此功能。B.O.Luck
function __doPostBack(eventTarget, eventArgument) {
try {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
catch (e) {
__doPostBack(eventTarget, eventArgument);
}
}
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中