动态创建多个ImageButton控件和连接Click事件

时间:2014-09-23 17:36:43

标签: asp.net

我是ASP.NET的新手。请原谅我的知识:)假设我想创建4个图像按钮。如果我点击任何图像按钮,它会将我移动到另一个具有不同STT的页面(< - 只是一个名字)。 这是我的代码:

    for (int i= 0; i< 4; i++)
            {
                ImageButton image = new ImageButton();
                image.Click += (s, args) =>
                    {
                        Response.Redirect("~/Showroom.aspx?STT=" + (i));
                    };
               //other things to do
            }

现在的问题是,当我点击任何图像按钮时。我将被重定向到Showroom.aspx,STT = 4(循环后我是)。如何将我重定向到具有所需STT的页面。

编辑: 只是为了澄清。我想要的是点击图像按钮1将我移动到Showroom.aspx STT = 0. Imagebutton 2将我移动到STT = 1的页面,依此类推。

2 个答案:

答案 0 :(得分:1)

问题

"~/Showroom.aspx?STT=" + (i)表示它在代理创建时捕获变量i而不是其值。

解决方案

在委托之外创建 网址

for (int i = 0; i < 3; i++)
{
    string url = string.Format("~/Showroom.aspx?STT={0}", i);
    var image = new ImageButton();
    image.Click += (s, args) => Response.Redirect(url);
}

答案 1 :(得分:1)

您需要将i复制到本地变量。或者正如另一个答案建议的那样,在你的lambda表达式中使用它之前构建你的URL。

            int x = i;
            image.Click += (s, args) =>
            {
                Response.Redirect("~/Showroom.aspx?STT=" + (x));
            };