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

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

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

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET MVC Framework

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

Q&A

解決済

1回答

11016閲覧

ASP.net MVC5 Validationのエラー時に、テキストボックスをハイライトしたい。

ikasoumen

総合スコア110

C#

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET MVC Framework

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

0グッド

0クリップ

投稿2017/05/05 20:16

編集2017/05/05 20:23

###前提・実現したいこと
Validationのエラー時に、テキストボックスをハイライトしたい。

###発生している問題・エラーメッセージ
ASP.NET MVC5 実践プログラミングという参考書で
チュートリアルを学んでいます。

p.246の入力値の検証という章において、
検証エラー時にテキストボックスをハイライトするサンプルがあるのですが、
上手く動作しません。

説明では、Content/Site.cssに
.input-validation-errorのスタイルを設定すればハイライトできると書いてあるのですが、ハイライトできません。

サーバ起動後の検証エラー発生時に、サーバ側のSite.cssを修正(.input-validation-errorを有効にする)し、保存すると検証エラーの対象となっているテキストボックスがハイライトされていることから、
クラスの指定は正しそうです。(やりたいことは、検証エラーと同時にハイライトしたい)

JavaScript等、クライアントサイドの制御に疎く、
原因が分からないためお力を借りたいです。

サンプルは以下URLのダウンロードから入手可能です。
落としたファイルのMvcModelで動作確認ができます。
ダウンロードサイト

以上、よろしくお願いいたします。

###該当のソースコード

Content/Site.css

.input-validation-error { background-color: #ffeeee; }

Web.config

<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="false" /> </appSettings>

Views/Members/Create.cshtml

@model MvcModel.Models.Member @{ ViewBag.Title = "Create"; } <h2>Create</h2> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Member</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" }) </div> </div> <!-- 省略 --> </div> </div> </div> } <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") }

展開後のhtml

<!-- 省略 --> <div> <a href="/Members">Back to List</a> </div> <hr /> <footer> <p>&copy; 2017 - マイ ASP.NET アプリケーション</p> </footer> </div> <script src="/Scripts/jquery-1.10.2.js"></script> <script src="/Scripts/bootstrap.js"></script> <script src="/Scripts/respond.js"></script> <script src="/Scripts/jquery.validate.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.js"></script> <script src="/Scripts/blackword.js"></script>

動作確認手順

1.サーバを起動する。
2.下記のURLからユーザ作成画面に移る。
http://localhost:ポート/Members/Create
3.下記の例のように検証エラーを発生させる。
名前に半角英数字、メールアドレスと認識できない文字を入力、Saveを実行

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

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

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

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

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

guest

回答1

0

ベストアンサー

ブラウザのキャッシュを消去してから試してみたらどうなりますか?

【追記】

キャッシュのせいではないかと言っておいてハズレだったら何なので、Visual Studio 2015 Community のインターネット用のテンプレートを使って、MVC5, .NET 4.6.1 アプリ作って、site.css に以下の CSS を追加して検証してみました。

input.input-validation-error { border: 1px solid #e80c4d; background-color: #ffeeee; }

結果は以下の画像(どうしてもここに貼れないので自分のサーバーにアップしてその URL を以下に書いておきます)の通り、検証結果 NG の場合テキストボックスの枠と背景の色が CSS に設定したように変わります。

http://surferonwww.info/BlogEngine/image.axd?picture=2017%2f5%2fmvc5Validation.jpg

ただし、テキストボックスにフォーカスが当たっている場合(上の画像の一番下のテキストボックス)、他のスタイル(たぶん bootstrap.css のもの)が優先的に適用されるようで、枠は青になります。背景の方はフォーカスが当たっているか否かの影響はなく、検証結果 NG で #ffeeee にななります。

投稿2017/05/06 02:43

編集2017/05/06 03:32
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ikasoumen

2017/05/06 04:19

ありがとうございます。 キャッシュをクリアしたところ動作するようになりました。 F5でリロードしてるから読み込まれているだろうと盲目的な思考でした。 なるほど、cssは静的コンテンツだからキャッシュされる? chromeの開発者ツールのsourcesから読み込まれたcssを確認する方法もありました。 レスポンスヘッダにキャッシュコントールの属性を付与できるらしい。 まだまだ、知らないこといっぱいあるだろうけど、 ひとつモヤモヤが晴れて前へ進めそうです。
ikasoumen

2017/05/06 04:24

ハイライトが更新されない状況を再現しようと思ったら、 今度は、キャッシュをクリアしなくとも、cssが正しく認識されるようになってしまった。 うーん、分からん。 あ、独り言です^^
退会済みユーザー

退会済みユーザー

2017/05/06 05:08

> F5でリロードしてるから読み込まれているだろうと盲目的な思考でした。 F5 キーでリロードした場合、site.css に対する要求の応答には HTTP 304 Not Modified(ヘッダのみでコンテンツは送信しない。ブラウザのキャッシュを使えという指示と同じ)を返すと思います。なので、キャッシュが使われたのでしょう。 Web 開発の基本として、問題が起きたらパケットキャプチャツールを使って要求・応答を見ることをお勧めします。自分的には Fiddler が使いやすいのでお勧めです。Chrome のデベロッパーツールでもキャプチャは可能です。 Fiddler のお勧め http://surferonwww.info/BlogEngine/post/2011/05/25/Recommendation-of-Fiddler.aspx
ikasoumen

2017/05/06 07:02

Fiddlerですか、なんかハッカーぽいですね。 正直ステータスコードは、200とそれ以外ぐらいにしか思っていなかったので、 この機会にどんなレスポンス返しているのかみてみたいと思います。(Teratailとか)
退会済みユーザー

退会済みユーザー

2017/05/06 07:40

> Fiddlerですか、なんかハッカーぽいですね。 そういうものではなくて、Web アプリの開発ツールとして必須に近いものだと自分は思っているのですが。 今回の例でも、Fiddler で見れば、以下の記事の画像のように 304 応答が返ってきているのは一目でわかったので、解決が早かったのではないかと思います。 http://surferonwww.info/BlogEngine/post/2015/05/19/cache-control-by-using-http-handler.aspx 個人的に特に真価を発揮すると思っているのが、jQuery.ajax を使ってデータをやり取りする場合。 どういうデータが送信されているか、送信先は正しいか、サーバーから応答は帰ってきているか、応答の内容は期待通りか、エラーが出ている場合サーバーから遅れれてきたエラーメッセージの内容はどういうものか・・・等々を調べるのに有用です。 今度またこういう機会があったら使ってみてください。Fiddler 無しでは半日悩むところが、5 分で解決するかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問