Response.Write类似于在更新面板中执行代码时的行为

时间:2009-08-19 18:29:08

标签: asp.net asp.net-ajax updatepanel response.write

有没有办法让Response.Write在UpdatePanel中工作,而不是因为显而易见的原因导致应用程序出错?或者,有没有办法在C#中没有多行代码的情况下获得类似的结果?

5 个答案:

答案 0 :(得分:2)

您可以在更新面板中放置一个文字控件,并使用以下方法产生相同的效果:

myLiteral.Text += "Some more text!";

答案 1 :(得分:1)

刚发现这对其他人有帮助。

您无法在更新面板中使用Response.Write或Response.Redirect。

要解决此问题,您必须使用Trigger。这用于从更新面板内部使服务器脱机

<asp:UpdatePanel ID="UpdatePanel9" runat="server">
<Triggers>
    <asp:PostBackTrigger ControlID="btnExcel" />
</Triggers>
<ContentTemplate>

  ---Your code here

</ContentTemplate>

这里的ControlID是按钮或其他控件。例如,在按钮单击事件中,您可以在响应中写入一些文本。

答案 2 :(得分:0)

获得类似行为(松散相似)的唯一方法是在更新面板中放置一个标签,该面板在部分回发上得到更新,并将其值设置为某个值(只需要设置一行代码)它... ...页面的其余部分根本没有更新,所以你无能为力。

为什么你还想要这个功能呢?

答案 3 :(得分:0)

Response.Write不适用于UpdatePanels,但正如Spencer所提到的,您可以将信息放在文字中。

另一种选择是使用System.Diagnostics.Debug.Assert()函数,如果您正在调试。这样做的好处是

  1. 您可以将这些内容放入代码中,然后将其从发布版本中编译出来,
  2. 你可以将它们放在不应该发生错误的地方,但会弹出来告诉你它们什么时候(只有你在调试时),并且
  3. 您的代码将在Assert行暂停运行,因此您可以准确了解Assert所在的位置。
  4. 与任何事情一样,不要过分夸大它们,但我发现它是一个非常有用的调试工具。

答案 4 :(得分:0)

我使用的这个问题的简单解决方案是调用JQuery函数html()insted调用Response.Write()...例如,假设我想更新UpdatePanel中的一些html文本我会做这样的事情:< / p>

使用Response.Write(),它会很简单:     回复于( “[TextToBeAddedToHTML]”);

但是Jquery有点复杂,你必须将Jquery库包含到Html页面中:

ScriptManager.RegisterStartupScript(this, GetType(), "TextUpdate", "$(\"#[ID_OF_HTML_Element]\").html(\"<p>" + [TextToBeAddedToHTML] + "</p>\");", true);