【解決方法】Javascript は ASP コードで変数を認識しません

プログラミングQA


使ってみます

jquery.sumoselect.js

asp.netページのComboBoxでDropDownListを取得します。 その上に載せました

<script src="Scripts/jquery-3.6.0.js"></script>
<script src="Scripts/jquery.sumoselect.js"></script>
<link href="Content/sumoselect.css" rel="stylesheet" />

    <script type="text/javascript">
            $(document).ready(function () {
                $(<%=ddlMINERAL_ADD.ClientID%>).SumoSelect({ okCancelInMulti: true });
        });
    </script>

ページには、テーブル、asp.UpdatePanel、asp.repeater、および要素があります

<asp:listbox ID="ddlMINERAL_ADD" runat="server"  selectionmode="Multiple">

リピーターの奥深くにあります。

エラーが発生します

引用:

コンパイラ エラー CS0103 – このコンテキストには変数が存在しません

.ddlMINERAL_ADD をリピーターから移動すると、すべて問題ありません。

私が試したこと:

したがって、document.ready イベントで JavaScript コードを使用して、いくつかの ddlMINERAL_ADD を「アクティブ化」する必要があります。

解決策 1

1 行のコード (次に示す) と何が起こるかを分割する必要があります。

ASP.NET
$(<%=ddlMINERAL_ADD.ClientID%>)

<% と %> の間の Razor エンジンはサーバー側で実行されます。
$() — jQuery 部分 — はクライアント側で実行されます。

では、実際には ddlMINERAL_ADD.ClientID の値はどこにあるのでしょうか? それはクライアント (jquery/javascript 側) にありますか、それともその変数はサーバー側 (C# コードのどこかに) に存在しますか?

クライアント コードに存在する場合、Razor レンダリング エンジンが値を取得できないのはそのためです (クライアント コードが実行される前にサーバー側で実行されます)。

サーバー側にあるユーザー名を持っていましたが、値を取得するにはクライアント側の JavaScript が必要でした。 このStackOverflowでそれを行う方法を書きました: https://stackoverflow.com/questions/4599169/using-razor-within-javascript/22175868#22175868[^]

コメント

タイトルとURLをコピーしました