Как загрузить HTML-фрагмент, возвращенный из вызова обработчика, в строку? - PullRequest
1 голос
/ 12 февраля 2010

У меня есть приложение ASP.NET MVC, и я пытаюсь загрузить следующий HTML-фрагмент из обработчика в другом проекте ASP.NET, с одного из моих контроллеров для отображения в представлении:

<br />
<div id="ctl00_divCommentary" class="commentary">
    <div id="ctl00_divCommentaryHeader">
        <span id="ctl00_lblCommentaryHeaderBold" class="commentaryHeader">blah</span>
        <span id="ctl00_lblCommentaryHeader">blah</span>
    </div>
    <div id="ctl00_divCommentaryText" class="commentaryText">blah blah blah</div>
</div>

Код, который я использую для получения этого фрагмента HTML, выглядит следующим образом:

public string GetCommentary()
{
    string commentary = "";

    Uri uri = new Uri("http://localhost/Handlers/CommentaryHandler.ashx");
    var doc = XDocument.Load(uri.ToString()); 

    commentary = doc.ToString();

    return commentary;
}

Это ошибка на линии

var doc = XDocument.Load(uri.ToString()); 

с сообщением «Есть несколько корневых элементов».

Есть ли способ вызвать этот обработчик и как-то загрузить результат в строку?

Спасибо

Dave

Ответы [ 2 ]

0 голосов
/ 02 марта 2010

Вот что в итоге сработало:

<% Html.RenderAction("HtmlSource", "MyController"); %>

со следующим методом в контроллере:

public string HtmlSource()
{
    HtmlManager wm = GetHtmlManager(2, 6);

    return wm.Html;
}

Html-менеджер просто читает html из файла, так же, как текст

0 голосов
/ 12 февраля 2010

Действительно, существует более одного корневого элемента (<div> и <br>). Либо освободите <br> из фрагмента, либо заверните весь фрагмент в другой <div>, чтобы сделать его действительным.

...