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" 属性を削除することで、問題の回避策を実行することになりました。そして今、テーブルのインナー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
        }
于 2013-10-30T09:32:28.877 に答える