为什么我的功能不起作用?

时间:2015-09-22 05:51:19

标签: c# asp.net

我使用Ajax工具包。我想为HTML代码创建文本编辑器。我在html链接标记中找到了.css文件,并为每个文件创建了一个LinkBut​​ton。我想在用户单击linkbutton .css文件在编辑器中打开时。我写这段代码:

string textHtml = "";
List<string> listTextHtml = new List<string>();
protected void Page_Load(object sender, EventArgs e)
{
    AsyncPostBackTrigger d = new AsyncPostBackTrigger();

    if (IsPostBack)
        return;
    StreamReader re = new StreamReader(string.Concat(Server.MapPath("/"), "\\Engine\\TextFile1.txt"));
    while (re.Peek() > 0)
    {
        txtHtmlCode.Content = txtHtmlCode.Content + re.ReadLine() + "\n";
    }
    textHtml = txtHtmlCode.Content;
    re.Close();
    string temp = textHtml;
    while (temp.Contains("link"))
    {
        string s = temp.Substring(temp.IndexOf("link"), temp.IndexOf("/>"));
        temp = temp.Substring(temp.IndexOf("/>") + 2);
        if (s.IndexOf(".css") >= 0)
        {
            s = s.Substring(s.IndexOf("href=\"") + 6);
            listTextHtml.Add(s.Substring(0, s.IndexOf("\"") - 1));
        }
        //temp = temp.Substring(temp.IndexOf("href="));
        //temp = temp.Substring(temp.IndexOf("\"") + 1);
        //listTextHtml.Add(temp.Substring(0, temp.IndexOf("\"") - 1));
        //temp = temp.Substring(temp.IndexOf("\"") + 1);
    }
    int i = 0;
    hfString.Value = "";
    foreach (var item in listTextHtml)
    {
        //HtmlGenericControl li = new HtmlGenericControl("li");
        LinkButton lb = new LinkButton();
        lb.ID = i.ToString();

        lb.Text = "Link - " + i.ToString();
        //lb.Click += ltnCssLoad_Click;
        lb.Click += new EventHandler(this.ltnCssLoad_Click);
        //li.Controls.Add(lb);
        phTags.Controls.Add(lb);
        d.ControlID = i.ToString();
        d.EventName = "Click";
        //udpMain.Triggers.Add(d);
        i++;
        hfString.Value += item + "|";
    }
}

单击linkbutton此功能必须运行:

protected void ltnCssLoad_Click(object sender, EventArgs e)
{
    LinkButton ClickedLink = (LinkButton)sender;
    string[] listText = hfString.Value.Split('|');//string.Concat(Server.MapPath("/"),
    StreamReader re = new StreamReader(string.Concat(string.Concat(Server.MapPath("/"), listText[int.Parse(ClickedLink.ID)])));
    txtHtmlCode.Content = "";
    while (re.Peek() > 0)
    {
        txtHtmlCode.Content = txtHtmlCode.Content + re.ReadLine() + "\n";
    }
    re.Close();
}

但是当我在函数ltnCssLoad_Click中使用断点时,当我点击链接按钮时,此功能不起作用。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这不起作用,因为当您单击链接按钮或任何动态添加的控件时,它会导致回发,并且如果IsPostBack为true,则您在页面加载事件处理程序中“返回”ed。

使用动态控件的痛苦在于您每次都必须重新创建它们(第一个请求以及后续的回发)。

将文件读取限制为第一个请求(即将其置于!IsPostBack状态)并在此之后运行链接按钮的创建代码。