相关疑难解决方法(0)

哪个控件导致回发?

我有两个按钮:

<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Button ID="Button2" runat="server" Text="Button" />
Run Code Online (Sandbox Code Playgroud)

如何在pageLoad上确定这两个中的哪一个导致回发?是否有一个简短的解决方案,因为我知道只有两个控件可以导致此回发?

asp.net postback

34
推荐指数
2
解决办法
5万
查看次数

按钮点击回发后__EVENTTARGET为空

我在aspx页面上有一个按钮

<asp:Button runat="server" CssClass="sc-ButtonHeightWidth" ID="btnFirstSave" Text="Save" OnClick="btnSave_Click" />
Run Code Online (Sandbox Code Playgroud)

我试图在后面的代码中获取事件目标和事件源,以便基于它进行一些验证.我试过下面的代码.

string ctrlname = page.Request.Params.Get("__EVENTTARGET");
string ctrlname = Request.Form["__EVENTTARGET"];
string ctrlname = Request.Params["__EVENTTARGET"];
Run Code Online (Sandbox Code Playgroud)

但以上所有都给了我空洞的价值观.如何获得每次都引起回发的控件.我上面做错了什么?

仅供参考:我已经尝试过本链接中提到的解决方案.但它唯一的返回按钮文本给我.我想要buttonID.

c# asp.net

13
推荐指数
2
解决办法
3万
查看次数

如何检查是否由动态链接按钮引起回发

我有一个按钮控件.单击此按钮,我需要动态添加链接按钮.链接按钮需要一个事件处理程序.因此,动态链接按钮首先添加到Page_Load中,然后在按钮单击处理程序中清除并再次添加.请阅读Dynamic Control的事件处理程序的工作,以了解此操作的业务需求.

我已经读过On postback,如何检查哪个控件导致Page_Init事件中的回发 以识别导致回发的控件(在Page_Load内).但它不符合我的情况.

需要做些什么更改才能确认回发是否是由链接按钮(在Page_Load内)引起的?

注意:请参阅以下内容以了解其中不可避免的情况https://codereview.stackexchange.com/questions/20510/custom-paging-in-asp-net-web-application

注1:我需要获取回发控制ID作为内部的第一步if (Page.IsPostBack).我需要添加动态链接按钮控件,只有它是从按钮或链接按钮的回发.将有其他控件导致回发.对于此类回发,我们不应该执行此代码.

注2:我Request["__EVENTARGUMENT"]在Page_Load中得到空字符串

相关问题:通过什么event,页面中将提供动态控件(用于在FindControl中使用).@Tung说 - "你的GetPostBackControlId方法正确获取导致回发的控件的名称,但它无法通过page.FindControl找到具有该id的控件,因为尚未创建链接按钮,因此页面不会知道它的存在."

ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PostbackTest.aspx.cs" Inherits="PostbackTest"
MasterPageFile="~/TestMasterPage.master" %>

<asp:Content ID="myContent" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div id="holder" runat="server">
</div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="TestClick" />
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

代码背后

public partial class PostbackTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

    if(Page.IsPostBack)
    {
        string IDValue = GetPostBackControlId(this.Page);
        int x = 0;

        holder.Controls.Clear();
        LinkButton lnkDynamic = …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net

12
推荐指数
1
解决办法
8456
查看次数

获取ASP.NET控件,该控件在AJAX UpdatePanel中触发回发

与此问题相关:在回发时,如何检查哪个控件导致Page_Init事件中的回发

如果控件包装在ASP.NET AJAX UpdatePanel中,则变量"control"为空,因为它在AJAX PostBack之后具有不同的ID.是否有解决方案来获取在ASP.NET Ajax UpdatePanel中触发回发的控件?

public static string GetPostBackControlName( Page page ) {
        Control control = null;

        /**
         * First we will check the "__EVENTTARGET" because if the postback is made
         * by controls which used the _doPostBack function, it will be available in the Request.Form collection.
         */
        string ctrlname = page.Request.Params["__EVENTTARGET"];

        if ( !String.IsNullOrEmpty( ctrlname ) ) {
            control = page.FindControl( ctrlname );
        } else {
            /**
             * If __EVENTTARGER is null, the control is a …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-ajax

4
推荐指数
1
解决办法
6842
查看次数

标签 统计

asp.net ×4

c# ×2

.net ×1

asp.net-ajax ×1

postback ×1