4

Htmlメールを取得しGridViewて送信する必要があります。

私のGridViewデザインは以下のように言及されています

<div id="DivEmail" class="clear">
    <asp:Repeater ID="rpt1" runat="server" OnItemDataBound="rpt1_ItemDataBound">
        <ItemTemplate>
            <asp:HiddenField ID="TypeID" runat="server" Value='<%# Eval("TypeID") %>' />
            <div id='Handle<%# Eval("TypeName")%>' class="ulheader" >
                <asp:Label ID="lblType" runat="server" Text='<%# Eval("TypeName")%>' ></asp:Label>
            </div>
            <div id="Reuslt<%# Eval("TypeName")%>">
                <asp:GridView ID="grvReport" runat="server" Width="100%" BorderColor="#e4e4e4" border="0" Style="border-collapse: collapse;" ShowHeader="true" CellPadding="5" CellSpacing="0" AutoGenerateColumns="false" EmptyDataText="No Results Found" AllowPaging="false" AllowSorting="false" CssClass="grid grid-iq" BackColor="#FFFFFF">
                    <Columns>
                        <asp:TemplateField HeaderText="Image">
                            <ItemTemplate>
                                <asp:Image ID="thumb" Width="100px" Height="100px" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' 
                                                 ImageAlign="Middle" />
                            </ItemTemplate>
                            ItemStyle CssClass="center" Height="20px" />
                            <HeaderStyle CssClass="grid-th center" Width="100px" VerticalAlign="Top" />
                        </asp:TemplateField>
                        <asp:BoundField DataField="Title" HeaderText="Title">
                            <HeaderStyle Height="20px" Width="20%" CssClass="grid-th-left" VerticalAlign="Top" />
                            <ItemStyle CssClass="left"></ItemStyle>
                        </asp:BoundField>
                        <asp:BoundField DataField="Description" HeaderText="Description">
                            <HeaderStyle Height="20px" Width="28%" CssClass="grid-th-left" VerticalAlign="Top" />
                            <ItemStyle CssClass="left"></ItemStyle>
                        </asp:BoundField>
                        <asp:TemplateField ShowHeader="false" HeaderText="View">
                            <ItemTemplate>
                                <asp:LinkButton ID="lbtnLink" runat="server" CommandArgument='<%# Bind("ID") %>'
                                  OnCommand="lbtnView_OnCommand" Text="View"></asp:LinkButton>
                            </ItemTemplate>
                            <ItemStyle CssClass="center" Height="20px" />
                            <HeaderStyle CssClass="grid-th center" Width="9%" VerticalAlign="Top" />
                        </asp:TemplateField>
                    </Columns>
                    <HeaderStyle CssClass="grid-th" Height="10px" HorizontalAlign="Center" VerticalAlign="Top"></HeaderStyle>
                </asp:GridView>
            </div>
        </ItemTemplate>
    </asp:Repeater>
</div>

Htmlサーバー制御を取得するには、以下のコードを使用します

protected void btnOK_Click(object sender, EventArgs e)
{
    var sb = new StringBuilder();
    DivEmail.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
    EmailContent += sb.ToString();
}

public override void VerifyRenderingInServerForm(Control control)
{
    /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
    server control at run time. */
}

そのようにすることで、私は例外を取得しています

RegisterForEventValidation can only be called during Render()

この問題について少しグーグルで調べたところ、結果EnableEventValidation="false"@page directive. しかし、私はこのソリューションを使用できません。

誰かがこれを解決するのを手伝ってくれますか??

4

0 に答える 0