2014-12-10 6 views
1

Я развиваюсь в проекте Winforms .NET 4.0, используя WebControl как редактор WYSIWYG, работая с YARTE editor, разработанным Мэттом Гроувсом.Winforms WebControl - Как предотвратить утечку ссылок?

Я пытаюсь добавить якорь тег и установить HREF атрибута к следующему пути:

var path = http://someurl.aspx?param1="val1"&param2="val2"&param3="youGetTheIdea" 

Я пытался несколько подходов; Я всегда получаю HTML маскирование амперсандов когда я пытаюсь написать URL к документу:

http://someurl.aspx?param1="this"&param2="doesnt"&param3="work" 

подходы, которые я попробовал Неудачно:

  1. Создание Link

    webBrowser.ExecCommand("CreateLink", false, path) 
    
  2. Создание HTML и вставка его в:

    var htmlDocument2 = args.Document.DomDocument as IHTMLDocument2; 
    if (htmlDocument2 == null) return; 
    var range = htmlDocument2.selection.createRange() as IHTMLTxtRange; 
    if (range == null) return; 
    range.pasteHTML(string.Format(path, range.text)); 
    
  3. Создание файла и направления WebBrowser к нему:

    // assume the links are already inserted, but aren't right. 
    var textWithBadLinks = webBrowser.DocumentText; 
    var betterText = UseRegexToReplaceBadLinkText(textWithBadLinks); 
    using (StreamWriter outfile =new StreamWriter(@"c:\test.html")) 
    { 
        outfile.Write(betterText); 
    } 
    webBrowser.Url= new Uri(@"c:\test.html"); 
    
  4. Создание потока и направления WebBrowser к нему:

    // same as above, but instead of the URL, use the DocumentStream: 
    webBrowser.DocumentStream = new StreamWriter(@c:\test.html); 
    
  5. Переход к файлу:

    webBrowser.Navigate(new Uri(@"c:\test.html")) 
    

Независимо от подхода, который я выбираю, амперсанды получают экранированные ссылки, которые не работают.

Заранее благодарю за любую помощь.

+0

Таким образом, проблема заключается в кодировании & &? С технической точки зрения, я считаю, что XHTML требует, чтобы amp был действительным. См .: http://stackoverflow.com/questions/275150/xhtml-and-ampersand-encoding –

+1

@mgroves. Похоже, вы правы - можете ли вы опубликовать это как ответ, чтобы я мог принять его? –

ответ