0

我正在尝试了解 UpdatePanel 和使用它们的最佳实践。

我正在使用 .Net4.0 和 VB.Net。

这个想法是为客户网站创建一个对话应用程序,因此我拥有名为 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>

康沃变种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

因此,我添加 OnLoad 的 Convo 在添加额外内容后仍保留在页面上,一旦按下 Convo 上的按钮,加载后添加的任何 convo 都会消失。

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

在任何地方都对多用途更新面板有很好的解释吗?

提前致谢

PS,我是最喜欢的,所以请只回复 VB

4

1 回答 1

1

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

本质上,添加 UpdatePanel 是为了简化 AJAX,但您仍然必须在 ASP.NET 的规则内工作。

于 2013-08-02T20:02:24.983 回答