質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

Q&A

解決済

1回答

2296閲覧

ASP.NET MVC5でSelect2使用時にモデルのValidationを有効にする方法がわからなくて困っています。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

0グッド

0クリップ

投稿2020/08/13 02:37

編集2020/08/13 02:41

前提・実現したいこと

C#、ASP.NET MVC5でSelect2のオートコンプリートコンボボックスを使用していて、
モデルのValidationを有効にする方法がわからなくて困っています。

View、javascriptの動きとしては、Select2で変更したら、input hiddenの値を変更するようにしています。

ご教授をお願いします。

該当のソースコード

■ Model validation

c#

1[Required(ErrorMessage = "{0} は選択が必須です。")]          // ← 有効にならない 2[Range(1, int.MaxValue, ErrorMessage = "{0} は選択が必須です。")]   // ← 試してみたが有効にならない 3[Display(Name = "分類")] 4public int CategoryId { get; set; }

■ View

html

1<div class="form-group"> 2 <label class="col-md-3">@Html.DisplayNameFor(model => model.CategoryId) <span style="color: orange;">[必須]</span></label> 3 <div class="col-md-9"> 4 <!-- Select2 - Id : DisplayName) --> 5 <select id="select2CategoryId"></select> 6 @Html.HiddenFor(model => model.CategoryId)<br /> 7 <div> 8 @Html.ValidationMessageFor(model => model.CategoryId) 9 </div> 10 </div> 11 </div> 12</div>

■ javascript

javascript

1var categories = getCategories(); 2 3// select2CategoryId 4var categoryId = $("#CategoryId").val(); 5var tempCategories = getSelect2Data(categories); 6setSelect2("#select2CategoryId", tempCategories, true, false, false, "50%"); 7$("#select2CategoryId").val(categoryIdEnum).trigger("change"); 8 9$("#select2CategoryId").on("select2:select", function (e) { 10 $("#CategoryId").val($(this).val()); 11}); 12 13$("#select2CategoryId").on("select2:unselecting", function (e) { 14 $("#CategoryId").val(null); // または0に変更 15}); 16 17function getSelect2Data(data) { 18 if (data) { 19 if (Object.keys(data).length) { 20 // select2 data形式に変換 21 var array = []; 22 $.each(data, function (key, value) { 23 array.push({ id: key, text: value }); 24 }); 25 26 return array; 27 } 28 } 29 30 return null; 31} 32 33function setSelect2(select2IdName, data, allowClear, disabled, tags, width) { 34 $(select2IdName).select2({ 35 data: data, 36 37 // Select2 option here 38 allowClear: allowClear, // Clear button, default : true 39 disabled: disabled, // Disabled(display only), default : false 40 placeholder: "-- 選択 --", // Placeholder 41 tags: tags, // Dynamic input, default : false 42 width: width // 50% or 100% 43 44 // Do not open when clicking "x" 45 }).on("select2:unselecting", function (e) { 46 $(this).data("state", "unselected"); 47 }).on("select2:open", function (e) { 48 if ($(this).data("state") === "unselected") { 49 $(this).removeData("state"); 50 var self = $(this); 51 self.select2("close"); 52 } 53 }); 54}

補足情報(FW/ツールのバージョンなど)

.NET Framework 4.7.2
C#、ASP.NET MVC5
Visual Studio Express 2012 for Web

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答の修正をします。

jQueryのvalidationがHiddenプロパティに対して有効になっていないため、下記のコードを
javascriptに追加することで有効になりました。

$.validator.setDefaults({ ignore: null });)

投稿2020/08/13 02:47

編集2020/08/13 06:17
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/13 06:15

コメントありがとうございます。 下記のコードをjavascriptに記載することでhiddenプロパティの検証に対応可能になりました。 $.validator.setDefaults({ ignore: null });
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問