как получить innerhtml серверного элемента с помощью c # (с другими серверными элементами управления внутри) - PullRequest
7 голосов
/ 23 июля 2011

как получить innerhtml серверного элемента с помощью c # (с другими серверными элементами управления внутри)?
или каков наилучший способ создания тела электронной почты в Visual Studio 2010?
у меня есть несколько кодов в C # для отправки писем ... (поддержка HTML тела)
так что я ищу способ для хардкодирования html тела!
и так сделал серверную часть div в режиме конструктора:

    <div runat="server" id="MainDiv" style="direction: rtl; font: 12px tahoma,arial,sans-serif; width: 700px;
        background-color: #f5f5ff; border: 2px solid #003366;">
        <div id="Header" style="width: 690px; background-color: #637eb0; height: 40px; margin: 5px auto;
            position: relative;">
            <img src="Images/logo.png" alt="logo" title="soscharge" style="width: 200px; position: absolute;
                top: 4px; left: 10px;" />
            <span style="color: #69fbfd; font: bold 13px tahoma,arial,sans-serif; position: absolute;
                top: 11px; right: 10px;">hi ...</span>
        </div>
        <div id="Content" style="padding: 10px 10px;">
            <ul style="margin:0px;padding:0px 10px 10px 10px;">
                <li>
                title1 : ---
                 </li>
                <li>
                    title 2 : 
                    <asp:Label ID="lblOredr_Id" runat="server" Text="---" ForeColor="Red"></asp:Label>
                </li>
            </ul>
            <br />
            <p style="text-align: center;color:#fd00dc;">
                bla bla</p>
        </div>
    </div>

но я не могу получить innterHtml этого div для моего тела письма по следующему коду:

 string s = MainDiv.InnerHtml.ToString();  

ОШИБКА:

Невозможно получить внутреннее содержимое MainDiv, поскольку оно не буквальный.

также у меня есть таблица на стороне сервера внутри MainDiv, и я хочу динамически добавить некоторые данные в эту таблицу.
В этой ситуации, что я могу сделать для получения HTML для тела письма?
заранее спасибо

1 Ответ

19 голосов
/ 23 июля 2011

Вы не можете вызвать InnerHtml для div, если его содержимое не является литералом (то есть внутри него нет серверных элементов управления).Но вы можете заставить его отображаться в строку, выполнив что-то вроде этого:

var sb = new StringBuilder();
mainDiv.RenderControl(new HtmlTextWriter(new StringWriter(sb)));

string s = sb.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...