代码之家  ›  专栏  ›  技术社区  ›  craigmoliver

回应。在更新面板中执行代码时的类似写行为

  •  0
  • craigmoliver  · 技术社区  · 17 年前

    有没有办法做出回应。在UpdatePanel中写入工作,而不会因明显原因导致应用程序出错?或者,在C#中,有没有一种方法可以在不使用多行代码的情况下获得类似的结果?

    5 回复  |  直到 17 年前
        1
  •  2
  •   Spencer Ruport    17 年前

    您可以在更新面板中放置一个文字控件,并使用以下命令获得相同的效果:

    myLiteral.Text += "Some more text!";
    
        2
  •  1
  •   farfour    15 年前

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

    您不能使用响应。写或回复。在更新面板内重定向。

    要解决这个问题,你必须使用触发器。这用于从更新面板内部进行服务器跳转

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

        3
  •  0
  •   Max Schmeling    17 年前

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

    你为什么想要这个功能?

        4
  •  0
  •   Jason    17 年前

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

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

    1. 你可以把这些放在你的代码中,它们将从一个版本中编译出来,
    2. 你可以把这些放在不应该发生错误的地方,但当它们发生时(只有在调试时)会弹出提示,并且
    3. 您的代码将在Assert行暂停运行,因此您确切地知道将Assert放在哪里会发生什么。

    与任何事情一样,不要过分地把它们放在任何地方,但我发现它是一个非常有用的调试工具。

        5
  •  0
  •   Filip Zivanovic    13 年前

    我使用的一个简单的解决方案是调用JQuery函数html(),而不是调用Response。Write()。..例如,假设我想更新UpdatePanel中的一些html文本,我会这样做:

    有回应。Write(),它很简单: 回应。写入(“[TextToBeAddedToHTML]”);

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

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