在我的项目中,我正在动态添加一组链接按钮。当我为那些没有触发的链接按钮创建事件时。这是我的代码。
namespace listofdirectories
{
public partial class directories : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string[] drives = System.IO.Directory.GetLogicalDrives();
foreach (string str in drives)
{
LinkButton lnk = new LinkButton();
lnk.Text = str;
lnk.ID = str;
this.Panel1.Controls.Add(lnk);
Panel1.Controls.Add(new LiteralControl("<br />"));
lnk.Click += new System.EventHandler(lnk_Click);
}
}
protected void lnk_Click(object sender, EventArgs e)
{
Response.Redirect("files.aspx");
}
}
}
答案 0 :(得分:1)
导致问题的是ID中的特殊字符。您将ID指定为“ C:\ ”或“ D:\ ”。
我添加了一个基于计数器的ID以使其正常工作
int i = 0;
foreach (string str in drives)
{
LinkButton lnk = new LinkButton();
lnk.Text = str;
lnk.ID = i.ToString();
this.Panel1.Controls.Add(lnk);
Panel1.Controls.Add(new LiteralControl("<br />"));
lnk.Click += new System.EventHandler(lnk_Click);
i++;
}
仅包含字母数字字符和下划线的组合 character(_)是此属性的有效值。包括空格 或其他无效字符将导致ASP.NET页面解析器错误。
供参考阅读本文档https://msdn.microsoft.com/en-us/library/system.web.ui.control.id%28v=vs.110%29.aspx
答案 1 :(得分:0)
您的点击事件必须先分配,然后在面板中添加控件。
foreach (string str in drives)
{
LinkButton lnk = new LinkButton();
lnk.Text = str;
lnk.ID = str;
lnk.Click += new System.EventHandler(lnk_Click);
this.Panel1.Controls.Add(lnk);
Panel1.Controls.Add(new LiteralControl("<br />"));
}