了解UpdatePanels

时间:2013-08-02 18:12:30

标签: asp.net vb.net updatepanel

我正在尝试了解UpdatePanels以及使用它们的最佳做法。

我在VB.Net上使用.Net4.0。

我们的想法是为客户网站创建一个对话应用程序,因此我有一个名为Convo.ascx的控件。代码在下面添加。

<asp:UpdatePanel runat="server">
<ContentTemplate>

    <h2>Conversation</h2>
    <p><asp:Literal ID="lit1" runat="server" /></p>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" />

</ContentTemplate>
</asp:UpdatePanel>

Convo.ascx.vb

Partial Class Convo
Inherits System.Web.UI.UserControl

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    lit1.Text = lit1.Text & "<p>" & TextBox1.Text & "</p>"
End Sub

End Class

在加载页面(Default.aspx)上我有:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb"     Inherits="_Default" %>

<%@ Reference Control="~/Convo.ascx" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
    <asp:scriptmanager ID="Scriptmanager1" runat="server"></asp:scriptmanager>

<div>
    <asp:UpdatePanel runat="server">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" Text="Add Conversation" />
            <asp:PlaceHolder ID="phConversation" runat="server">
            </asp:PlaceHolder>
        </ContentTemplate>
    </asp:UpdatePanel>
 </div>
 </form>
 </body>
 </html>

使用Codebehind Default.aspx.vb作为

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    AddConvo()
End Sub

Private Sub AddConvo()
    Dim getPh As New PlaceHolder
    getPh = CType(Me.FindControl("phConversation"), PlaceHolder)
    Dim ucConvo As New Convo
    ucConvo = CType(LoadControl("~/Convo.ascx"), Convo)
    getPh.Controls.Add(ucConvo)
End Sub

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    AddConvo()
End Sub
End Class

所以Convo我添加OnLoad后仍保留在页面上,因为一旦Convo上的按钮被击中,加载完成后添加了任何convo。

所以我的问题是,我怎样才能让这些添加并保留?最终它们将被添加到数据库中,但是现在我正在尝试理解UpdatePanels,因为它们将成为此应用程序的基础。

对任何地方的多用途UpdatePanel都有很好的解释吗?

提前致谢

PS,我最喜欢所以只有VB回复

1 个答案:

答案 0 :(得分:1)

问题实际上不是UpdatePanel,而是ASP.NET。 ASP.NET Web窗体使用整个页面的控件层次结构,并且您将“动态”添加到层次结构中。由于您是这样做的,因此ASP.NET要求您在每次回发到服务器时将控件重新添加到控件层次结构中。 UpdatePanel是一种回发到服务器的方式,因此您必须将旧用户控件和新用户控件重新添加到该层次结构中。

基本上添加UpdatePanel是为了让AJAX变得简单,但你仍然需要在ASP.NET的规则范围内工作。