在ASP.NET中从引用者的表单中查找单击按钮

时间:2014-05-18 11:52:39

标签: c# asp.net request

我点击NextPage.aspx中的按钮,然后将PostBackUrl重定向到StartUpPage.aspx

按钮名称以“ctl”开头。如何在StartUpPage.aspx的页面加载中获取按钮名称?我知道在Request.Form["ctl..."]中是按钮的值。但是我如何找出哪一个是被点击的?

以下是我在NextPage.aspx中创建按钮的代码:

int i = 0;
        foreach (ListItem li in ListItems)
        {
            Button b = new Button();
            b.Text = li.Text;
            b.PostBackUrl = "StartUpPage.aspx";
            b.ID = "ctl" + i;
            PlaceHolderButtons.Controls.Add(b);
            i++;
        }

2 个答案:

答案 0 :(得分:1)

你应该在“NextPage.aspx”中声明一个公共的可用性。然后每次创建按钮时,只需将按钮id设置为此变量。然后在“StartUpPage.aspx”页面中,只需在pageload上调用公共变量。像这样:

在NextPage.aspx

    public string btnID="";
    protected void Page_Load(object sender, EventArgs e)
    {
        int i = 0;



        foreach (ListItem li in ListItems)
        {
            Button b = new Button();

            b.Text = li.Text;
            b.PostBackUrl = "StartUpPage.aspx";
            b.ID = "ctl" + i;
            btnID = b.ID;
            PlaceHolderButtons.Controls.Add(b);
            i++;
        }
    }
在StartUpPage.aspx中

    protected void Page_Load(object sender, EventArgs e)
    {

      NextPage ob = new NextPage();
      string ID= ob.btnID
    }

现在,您将在ID变量

中获得按下的按钮ID

答案 1 :(得分:0)

我建议你使用查询字符串。当您指定按钮控件的postbackurl时,也会发送按钮ID。在您的StartUpPage中,您可以通过从查询字符串中获取控件ID来找到上一页的控件。 这是例子:

NextPage.aspx:

int i = 0; foreach (ListItem li in ListItems) { Button b = new Button(); b.Text = li.Text; b.ID = "ctl" + i; b.PostBackUrl = "StartUpPage.aspx?id=" + b.ID;
PlaceHolderButtons.Controls.Add(b); i++; }

StartUpPage:

 if (PreviousPage != null)
    {
        Button btn = (Button)PreviousPage.FindControl(Request.QueryString["id"]);
        Response.Write(btn.Text);

    }