html输入上的RegisterForEventValidation

时间:2013-10-24 14:58:32

标签: javascript html-table innerhtml eventvalidation

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

EnableEventValidation="false" 

因此我想在重写方法中注册textinput,这是一个例子

<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
        }

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

  

只能在Render();

期间调用RegisterForEventValidation

知道如何实现这一目标没有设置EnableEventValidation="false"

1 个答案:

答案 0 :(得分:0)

所以我最终通过删除runat =“server”属性来解决问题。 现在,我正在使用userinput完成表格的内部HTML。这是变化。

 <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
        }