0

我有一个 HtmlTable,我需要从中获取 innerhtml,而不设置

EnableEventValidation="false" 

因此我想在一个被覆盖的方法中注册文本输入,这里是一个例子

<table id="Table1" runat="server">
    <tr>
        <td>
        </td>
        <td>
            <span>Comments</span>
        </td>
    </tr>
    <tr>
        <td>
            Write som text in the field
        </td>
        <td>
            <input id="Text1" type="text" runat="server"></td>
        <td>
            </td>
    </tr>
</table>
<asp:Button ID="submit" runat="server" Text="Button" onclick="submit_Click" />

如果我删除输入 Text1 它工作正常但是。

在代码隐藏中。

   public override void RenderControl(HtmlTextWriter writer)
        {
            Page.ClientScript.RegisterForEventValidation(Text1.UniqueID);
            base.RenderControl(writer);
        }

        protected void submit_Click(object sender, EventArgs e)
        {
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            Table1.RenderControl(htw);

            string g = sw.ToString(); //Here i want the innerhtml
        }

我已经尝试了几种不同的解决方案,但我仍然得到

RegisterForEventValidation 只能在 Render() 期间调用;

知道如何在没有设置的情况下完成此操作EnableEventValidation="false"

4

1 回答 1

0

所以我最终通过删除 runat="server" 属性解决了这个问题。现在我用用户输入完成了表格的innerhtml。这是更改。

 <table id="Table1" runat="server">
        <tr>
            <td>
            </td>
            <td>
                <span>Comments</span>
            </td>
        </tr>
        <tr>
           <td>
            Write som text in the field
        </td>
        <td>
            <input id="Text1" name="Text1" type="text" value="<%=ServerValue %>"></td>
        <td>
                </td>
        </tr>
    </table>
    <asp:Button ID="submit" runat="server" Text="Button" onclick="submit_Click" />

runat="server" 消失了,并且绑定了一个值。

public string ServerValue = String.Empty;
        protected void submit_Click(object sender, EventArgs e)
        {
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            ServerValue = String.Format("{0}", Request.Form["Text1"]);
            Table1.RenderControl(htw);

            var g = sw.ToString();// here is the whole innerhtml of the table
        }
于 2013-10-30T09:32:28.877 回答