我有一个web方法,将从jquery ajax调用:
[WebMethod]
public string TestMethod(string param1, string param2)
{
StringBuilder b = new StringBuilder();
HtmlTextWriter h = new HtmlTextWriter(new StringWriter(b));
this.LoadControl("~/Pages/Controls/Listing.ascx").RenderControl(h);
string controlAsString = b.ToString();
return controlAsString;
}
Run Code Online (Sandbox Code Playgroud)
(这是一种非静态的方法,我们能够击中它.这不是问题)
执行loadControl()方法时,我收到一条错误消息:只能在Render期间调用RegisterForEventValidation.
我已经为当前的aspx,禁用的viewstate包含了EnableEventValidation ="false".但我仍然得到同样的错误.有什么想法吗?
ListView
当您根据默认行为插入/删除/重新排序(或执行任何其他操作)项目时ListView.builder
,ListView.separated
它总是会重建整个小部件。
我怎样才能避免这种情况?它会带来不良结果,例如数据丢失。
我正在使用C#中的静态类,我正在尝试使用Control.RenderControl()
一个字符串/标记表示Control
.
不幸的是,控件(和所有子控件)使用事件冒泡来填充某些值,例如,在实例化时,然后调用RenderControl()
以下内容:
public class MyTest : Control
{
protected override void OnLoad(EventArgs e)
{
this.Controls.Add(new LiteralControl("TEST"));
base.OnLoad(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我返回一个空字符串,因为OnLoad()
从未被解雇过.
有没有办法可以调用'假的'页面生命周期?也许使用一些虚拟Page
控制?
我们尝试从GridView中获取HTML并将其存储到String中,以便字符串可以用作电子邮件的正文.
到目前为止,我们在代码隐藏中使用了这种编码:
Protected Sub EmailStudentList()
' Get the rendered HTML.
'-----------------------
Dim SB As New StringBuilder()
Dim SW As New StringWriter(SB)
Dim htmlTW As New HtmlTextWriter(SW)
GridViewSummary.RenderControl(htmlTW)
' Get the HTML into a string.
' This will be used in the body of the email report.
'---------------------------------------------------
Dim dataGridHTML As String = SB.ToString()
MsgBox(Server.HtmlEncode(dataGridHTML))
End Sub
Run Code Online (Sandbox Code Playgroud)
应用程序运行时会显示以下错误:
Control 'BodyPlaceholder_GridViewSummary' of type 'GridView' must be placed
inside a form tag with runat=server.
Run Code Online (Sandbox Code Playgroud)
所以我在标记的这个位置放置了一个表单标记:
<asp:Content
ID="ContentBody"
ContentPlaceHolderID="BodyPlaceholder"
runat="server">
<form runat="server">
Run Code Online (Sandbox Code Playgroud)
现在我们得到这个错误:
A …
Run Code Online (Sandbox Code Playgroud) vb.net asp.net stringbuilder rendercontrol string-conversion