gpt4 book ai didi

c# - EVENTTARGET 确定发件人时出现问题

转载 作者:行者123 更新时间:2023-11-30 16:30:25 25 4
gpt4 key购买 nike

我试图弄清楚点击了哪个按钮,此代码在 IE 中运行良好,但如果我在 Chrome、Firefox 或 Safari 中运行,则它不会执行任何操作。在 firefox 中使用 firebug 时,我查看了表单详细信息,它显示 EVENTTARGET 没有任何值(value),它只是空白。如何让它在 FF、Chrome 和 Safari 上运行?

方法:

       Control postbackControlInstance = null;

string postbackControlName = page.Request.Params.Get("__EVENTTARGET");
if (postbackControlName != null && postbackControlName != string.Empty)
{
postbackControlInstance = page.FindControl(postbackControlName);
}
else
{
for (int i = 0; i < page.Request.Form.Keys.Count; i++)
{
postbackControlInstance = page.FindControl(page.Request.Form.Keys[i]);
if (postbackControlInstance is System.Web.UI.WebControls.Button)
{
return postbackControlInstance;
}
}
}
if (postbackControlInstance == null)
{
for (int i = 0; i < page.Request.Form.Count; i++)
{
if ((page.Request.Form.Keys[i].EndsWith(".x")) || (page.Request.Form.Keys[i].EndsWith(".y")))
{
postbackControlInstance = page.FindControl(page.Request.Form.Keys[i].Substring(0, page.Request.Form.Keys[i].Length - 2));
return postbackControlInstance;
}
}
}
return postbackControlInstance;

代码调用方式:

        if (Page.IsPostBack)
{
try
{
Control cause = GetPostBackControl(Page);
string statecause = cause.ID;
if (statecause == "buttonName1")
{
search(statecause);
}
else if (statecause == "buttonNAME2")
{
resetfields();
}
}
catch { }
}

最佳答案

最好的方法是确定导致回发的控件覆盖protectedPage.RaisePostBackEvent方法。 ASP.NET 基础结构使用此方法通知导致回发的服务器控件它应该处理传入的回发事件:

public class MyPage : Page
{
protected override void RaisePostBackEvent(
IPostBackEventHandler sourceControl,
string eventArgument
)
{
// here is the control that caused the postback
var postBackControl = sourceControl;

base.RaisePostBackEvent(sourceControl, eventArgument);
}
}

您提供的代码应该适用于客户端 __doPostBack 时的场景。功能仅呈现到页面(例如,如果您使用唯一的一个按钮,如 <asp:Button runat="server" ID="btnSubmit" Text="submit" UseSubmitBehavior="true" />,它将不会被呈现)。

如果即使在__doPostBack的情况下功能已呈现,但 __EVENTTARGET参数为空表示 __doPostBack 的默认行为在大多数情况下,自定义/不兼容的 javascript 代码违反了该功能。在这种情况下,即使 ASP.NET 基础结构也无法正确处理回发事件。

关于c# - EVENTTARGET 确定发件人时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5704500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com