如果有人遇到这个问题并选择覆盖 Render 方法,这里有一个示例代码。
var stringWriter = new System.IO.StringWriter();
var htmlWriter = new HtmlTextWriter(stringWriter);
base.Render(htmlWriter);
var html = stringWriter.ToString();
const string validationELement = "<input type=\"hidden\" name=\"__EVENTVALIDATION\"";
const string hiddenDivName = "<div class=\"aspNetHidden\">";
// Find event validation element.
var startIndex = html.IndexOf(validationELement);
if (startIndex >= 0)
{
var endIndex = html.IndexOf("/>", startIndex) + 2;
// Cut event validation element.
var input = html.Substring(startIndex, endIndex - startIndex);
html = html.Remove(startIndex, endIndex - startIndex);
// Paste element into hidden div.
var hiddenDivStartIndex = html.IndexOf(hiddenDivName);
html = html.Insert(hiddenDivStartIndex + hiddenDivName.Length, input);
}
writer.Write(html);