C# - RenderControl问题,'RegisterForEventValidation只能在Render()期间调用

时间:2013-01-28 09:21:54

标签: c# gridview asp.net-4.0 rendercontrol

我需要获取Html的{​​{1}}并发送电子邮件。

我的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. */
}

我在Google上搜索了一些问题,结果显示在RegisterForEventValidation can only be called during Render() 设置EnableEventValidation="false"。但是我无法使用这个解决方案。

任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案