我是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的页面,依此类推。
答案 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));
};