10

Select2 に変換された選択ボックスは、ASP.NET MVC フレームワークの控えめな検証メカニズムと自動的に統合されません。
たとえば、通常の選択ボックス (モデル定義で必須とマークされている) を含むフォームで、選択ボックスでオプションが選択されていない状態でフォームを送信すると、選択ボックスの境界線と背景が赤みを帯びた色になります。 、および @Html.ValidationMessageFor を使用することにより、エラー メッセージがあれば、ボックスの横に表示できます。ただし、選択ボックスが Select2 コンポーネントに変換されると、上記の機能はいずれも機能しなくなります。検証エラー メッセージも表示されません。
検証エラー メッセージが表示されない理由は、Select2 が元の選択ボックスの表示 CSS プロパティを none (display:none) に変更したためと思われます。田畑。

アイデア/解決策はありますか?

4

4 に答える 4

1

select2 プラグインで同様の問題が発生しました。具体的にどの機能を使用しているのか正確にはわかりませんが、私の経験では、document.readyイベントで要素を select2 として設定すると、プラグインは要素の属性の一部をその場で変更します (後で要素の 1 つを調べます)。ページの読み込みが完了しました - 多くの場合、id および class プロパティが、ソースを表示したときに表示されるものとは異なります)。

コードを実際に見ずに詳細を提供することは困難ですが、開始するためのいくつかのアイデアを次に示します。

まず、ヘッダーに select2.css スタイルシートへのリンクがあることを確認してください。

次に、フォーム送信について話しているので、完全なポストバックを取得しているか、AJAX 経由で送信しているかを調べることをお勧めします (jQueryMobile を使用している場合は、 jquerymobile.js ファイルを作成するかdata-ajax="false"、フォーム属性に a を設定します)。このために返される値を見ることができますRequest.IsAjaxRequest()。明らかに、ajax 経由で送信している場合は、document.ready イベントにヒットせず、select2 が適切に初期化されないため、それを回避する方法を見つける必要があります。送信後にページを更新してみて、select2 コンポーネントが表示されるかどうかを確認してください。

次に、要素を調べて、プラグインが実行時に再割り当てしたクラスを実際に操作しようとしているため、要素が期待どおりに動作していないかどうかを確認することをお勧めします。ロジックを調整するだけでなく、select2 コード自体を掘り下げて動作を変更することもできます。実際には、コードが何を行っているかについてはかなりよく文書化されています。質問をフォローアップします。

于 2012-12-21T21:25:17.163 に答える