1

Web ページに ajax:TabContainer を追加したいと考えています。ビルド エラーは発生しませんが、ページを参照しようとすると、「コントロールにコード ブロックが含まれているため、コントロール コレクションを変更できません (つまり、<% ... %>)」というエラーが表示されます。 .

サンプル サイト用の Ajax Control Toolkit を再ダウンロードし、ソリューションを VS で開き、TabContainer 用のサンプルを実行したところ、問題なく動作しました。おそらく Ajax Control Toolkit の別のバージョンだと思いましたが、そうではありませんでした。2 つのサイトで参照されている AjaxControlToolkit.dll ファイルは同一です。自分のサイトで TabContainer を動作させることができないのはなぜですか?

もう1つ問題がありますが、それが関連しているかどうかはわかりません。最近、Visual Studio 2008 をインストールしました。Web サイトを開くとすぐに、VS はツールボックスに [AJAX コントロール] タブを自動的に作成し、すべての ajax コントロールで埋めました。ソース コードでは、すべてのコントロールに「ajax」というプレフィックスが付いています。つまり、「< ajax:TabContainer runat="server" ... >」です。

ただし、サンプル Web サイトを開くと、Visual Studio によってツールボックスに別のタブが作成されました。「AjaxControlToolkit コンポーネント」には、「AJAX コントロール」と同じコントロールがすべて含まれています。なぜ同じコントロールが 2 回追加されたのかはわかりません (しかし、不思議なことに、ツールボックスに別のアイコンが表示されます)。ソース コードでは、すべてのコントロールに「ajaxToolkit」というプレフィックスが付いています。つまり、「< ajaxToolkit:TabContainer runat="server" ... >」です。何が起きてる?私はただTabContainerを自分のサイトで動作させたいだけです。

4

6 に答える 6

6

標準のサーバー レンダリングを使用するコントロール内で <%= %> (書き込み) ブロックを使用することはできません。このエラーが発生します。

ASP AJAX コンポーネントが機能するには、次のものが必要です。

<head runat="server">...

そうしないと、このエラーでもクラッシュします。

ただし、これらのサーバー コントロール内でデータバインドすることはできます。

<head runat="server">
    <link rel="stylesheet" type="text/css" 
        href="<%# ResolveUrl( "~/styles/common.aspx" ) %>" />
...

そして、ページの読み込みで:

Page.Header.DataBind();

このエラーは、ASP WebForms がコントロールをコンポーネント コレクションとしてレンダリングする方法が原因で発生します。コレクション (およびデータバインド <%# を想定) またはリテラル書き込み (および <%= を想定) のいずれかを処理できますが、両方を同時に処理することはできません。

この問題を永続的に回避する最善の方法は、ASP MVC に切り替えることです。

于 2009-06-29T13:21:31.423 に答える
2

このエラーは Ajax に固有のものではありません。

ajax:TabContainer を asp:Panel 内に配置してみてください。または、ページから <% ...%> コード ブロックを削除します。

于 2008-12-10T18:57:29.750 に答える
1

こんにちは、これもjavascriptタグだけでなく、ページのheadタグ内で<%=%>または<%Response.Write%>を使用するものです。データバインディングディレクティブ<%#eval(some code)%>を使用するようにコードを変更するか、本文にコンテンツを移動します(これは、ページの読み込み時間を短縮するのにも役立ちます)。

于 2010-10-25T08:58:02.990 に答える
1

私はそれを理解しました!

これは、タグ<head>が含まれているときにAJAXコントロールを使用しようとした場合に表示されるエラーメッセージです。<script>

JavaScriptを本体に移動したところ、正常に動作しているようです。

于 2008-12-10T20:57:14.457 に答える
0

Pragnesh、JavaScriptのHEADタグ間を確認してください。AJAX タブ コントロールの動作を妨げる <%%> コード ブロックを含む JavaScript がいくつかありました。

于 2010-02-04T15:43:03.030 に答える
-1

<%=....%> マスターページにあるコードの一部を保持するだけで何もする必要はありません

于 2013-03-25T11:19:31.423 に答える