2015-09-22 2 views
0

Я использую Ajax toolkit.I хочу создать текстовый редактор для кодов HTML. Я нашел файл .css в тегах ссылок html и для каждого из этих файлов создаю 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, эта функция не работает, когда я нажимаю на LinkButton. Как я могу это исправить?

+0

"Не работает"? Не могли бы вы быть более конкретными? –

+0

Видимо, его английский не так уж и хорош, но я уверен, что он хочет означать, ясно, что «моя функция не работает» или «моя функция не работает» – MindlessRanger

+0

@MindlessRanger вы как бы заявляете очевидное , Возникает вопрос: «Что не работает» или «Объясните, что вы ожидаете увидеть, что вы на самом деле видите и что вы пытались решить эти различия». Также объясняется в [ask]. – CodeCaster

ответ

1

Это не работает, потому что, когда вы нажимаете кнопку ссылки или какой-либо динамически добавленный элемент управления, он вызывает сообщение назад, и вы возвращаете ed в обработчике событий загрузки страницы, если IsPostBack истинно.

Боль с использованием динамического контроля заключается в том, что вы должны воссоздавать их каждый раз (первый запрос, а также последующие сообщения).

Ограничить чтение файла первым запросом (т. Е. Поставить его в состояние IsPostBack) и после этого запустить код создания ссылок.

Смежные вопросы