0

UpdatePanels とそれらを使用するためのベスト プラクティスを理解しようとしています。

VB.Net で .Net4.0 を使用しています。

アイデアは、クライアントの Web サイト用の会話アプリを作成することなので、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

そのため、OnLoad を追加した Convo は、Convo のボタンが押されると、ロードがなくなった後に追加された追加された任意の convo が追加された後もページに残ります。

だから私の質問は、これらを追加して残すにはどうすればよいですか? 最終的にはデータベースに追加される予定ですが、現在、このアプリの基盤となる UpdatePanels を理解しようとしています。

マルチユース 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 に答える