【发布时间】:2009-08-19 18:29:07
【问题描述】:
有没有办法让 Response.Write 在 UpdatePanel 中工作,并且不会因为明显的原因导致应用出错?或者,有没有一种方法可以在 C# 中不超过一行代码的情况下获得类似的结果?
【问题讨论】:
标签: asp.net asp.net-ajax updatepanel response.write
有没有办法让 Response.Write 在 UpdatePanel 中工作,并且不会因为明显的原因导致应用出错?或者,有没有一种方法可以在 C# 中不超过一行代码的情况下获得类似的结果?
【问题讨论】:
标签: asp.net asp.net-ajax updatepanel response.write
您可以在更新面板中放置一个文字控件,并使用以下方法获得相同的效果:
myLiteral.Text += "Some more text!";
【讨论】:
刚刚发现这可能对其他人有帮助。
您不能在更新面板中使用 Response.Write 或 Response.Redirect。
要解决这个问题,您必须使用触发器。这用于从更新面板内部进行服务器访问
<asp:UpdatePanel ID="UpdatePanel9" runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="btnExcel" />
</Triggers>
<ContentTemplate>
---Your code here
</ContentTemplate>
这里的 ControlID 是按钮或其他控件。例如,在按钮单击事件中,您可以在响应中写入一些文本。
【讨论】:
获得相似行为(大致相似)的唯一方法是在更新面板中放置一个标签,该标签在该部分回发时得到更新,并将其值设置为某个值(只需一行代码即可设置它)...页面的其余部分根本没有更新,所以你无能为力。
为什么你仍然想要这个功能?
【讨论】:
Response.Write 不适用于 UpdatePanel,但正如 Spencer 所说,您可以将您的信息放在文字中。
如果您正在调试,另一个选项是使用System.Diagnostics.Debug.Assert() 函数。这样做的好处是
与任何东西一样,不要过分将它们放在任何地方,但我发现它是一个非常有用的调试工具。
【讨论】:
我使用的这个问题的一个简单解决方案是调用 JQuery 函数 html() insted 调用 Response.Write()... 例如,假设我想更新 UpdatePanel 中的一些 html 文本,我会这样做:
使用 Response.Write(),它会很简单: Response.Write("[TextToBeAddedToHTML]");
但是 Jquery 有点复杂,你必须在 Html 页面中包含 Jquery 库:
ScriptManager.RegisterStartupScript(this, GetType(), "TextUpdate", "$(\"#[ID_OF_HTML_Element]\").html(\"<p>" + [TextToBeAddedToHTML] + "</p>\");", true);
【讨论】: