我有一个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"
?
答案 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
}