我正在尝试了解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回复
答案 0 :(得分:1)
问题实际上不是UpdatePanel,而是ASP.NET。 ASP.NET Web窗体使用整个页面的控件层次结构,并且您将“动态”添加到层次结构中。由于您是这样做的,因此ASP.NET要求您在每次回发到服务器时将控件重新添加到控件层次结构中。 UpdatePanel是一种回发到服务器的方式,因此您必须将旧用户控件和新用户控件重新添加到该层次结构中。
基本上添加UpdatePanel是为了让AJAX变得简单,但你仍然需要在ASP.NET的规则范围内工作。