私は C# .net 4.0 Web サイト プロジェクトを持っており、その上にかなり複雑なフィルター処理された検索ページがあります。Repeater 内に追加される複数の UpdatePanels があります。1 つの UpdatePanel がポストバックを行うと、他のすべての UpdatePanel も同時にポストバックします。
ユーザーが表示することを選択したアイテムの数に応じて、非常に多くの UpdatePanels が存在する可能性があるため、これは問題になります。UpdatePanels が理想的でないことはわかっています。これは私が書いたものではありませんが、すぐに修正する必要があります。
Repeater コントロールを内部に持つ UpdatePanel を保持する LandingPage があります。リピーター内には、Article というユーザー コントロールがあります。Article コントロールには、いくつかの HTML と、Save という 2 番目のユーザー コントロールが含まれています。Save コントロールにも UpdatePanel があります。
私が抱えている問題は、最初の btnSave イベントだけが発生することです。したがって、「btnSave」をクリックすると機能しますが、その後のすべてのボタン クリック イベントは発生しません。
また、Save コントロールのポストバックで UpdatePanel のすべてのインスタンスが同時にポストバックされることにも気付きました。これは正常ですか?
したがって、ページの単純化されたビューは次のようになります。
LandingPage.aspx
<asp:UpdatePanel ID="pnl" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:Repeater ID="resultsRep" runat="server">
<ItemTemplate>
<uc:Article id="Article1" runat="server" />
</ItemTemplate>
</asp:Repeater>
<asp:Button id="btnLoadMore" runat="server" Text="Load More" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnLoadMore" EventName="Click" />
</Triggers>
<asp:UpdatePanel>
カスタム ユーザー コントロールの「アーティクル」
<asp:PlaceHolder ID="ArticlePanel" runat="server">
<!-- Assorted HTML stuff here -->
<uc:Save id="Save1" runat="server" />
</asp:PlaceHolder>
カスタム ユーザー コントロールの「保存」
<asp:UpdatePanel ID="ctl" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True">
<ContentTemplate>
<asp:LinkButton ID="btnSave" runat="server" OnClick="btnSave_Click" CausesValidation="False" Text="Save" />
</ContentTemplate>
</asp:UpdatePanel>
いつもありがとうございます。
編集
さらに調査した結果、Firebug コンソールを使用して、次のエラーがスローされるため、後続のポストバックが発生しないことがわかりました。
505|error|500|Invalid postback or callback argument.
Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.
For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.
If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.|
それで、どういうわけか私は危険なものを投稿しているように見えますか?