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

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

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

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

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

Q&A

解決済

2回答

3773閲覧

ValidationMessageの文字化けの件

masterofpuppets

総合スコア12

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

ASP.NET

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

0グッド

1クリップ

投稿2018/12/25 05:25

いつもお世話になっております。
Windows10Pro、VS2017 Ver 15.9.4環境にて、.NET Framework 4.7.2、ASP.NET MVC5でWebアプリを開発中です。
@Html.ValidationMessageで表示されるメッセージが、下記の様に文字化けして表示されます。

!tYW1c!The value 'aa' is invalid. 表©鷗字!

日本語にて表示させたいのですが、設定のどの部分を弄る必要があるのか、ご教示いただければと存じます。
何卒、よろしくお願い申し上げます。

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

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

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

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

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

guest

回答2

0

どのようにしてそういう結果になったのですか? それを具体的に書いてくれないと話が始まらないのですが、とりあえず基本的なことを言うと・・・

(1) モデルのプロパティに Range, RegularExpression, Required, StringLength など必要なデータアノテーション属性を付与する。

(2) エラーメッセージは、デフォルトのものを使わず、自分で各データアノテーション属性の ErrorMessage プロパティに設定する。

具体例は以下の記事を見てください。

コレクションのデータアノテーション検証
http://surferonwww.info/BlogEngine/post/2014/09/01/validation-of-collection-data-during-model-binding-using-data-annotation.aspx

(3) モデルをベースにスキャフォールディング機能を使って Controller と View を自動生成する。

そうすると、以下のような View が自動生成され(あくまで例です。ValidationSummary, EditorFor, ValidationMessageFor に注目してください) 、クライアントサイドとサーバーサイド両方での検証が可能になり、検証 NG の場合は (2) で設定したエラーメッセージが表示されます。

@model Mvc5App.Models.TestViewModel @{ ViewBag.Title = "Create"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Create</h2> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>TestViewModel</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.No, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.No, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.No, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Project, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Project, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Project, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </div> </div> </div> } <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") }

投稿2018/12/25 06:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

masterofpuppets

2018/12/25 08:38

毎度、参考になるご指摘・アドバイスを頂戴し誠にありがとうございました。 今回、西暦年月を入力し合致したデータを表示する…というページを作成しているところなのですが、 西暦年月入力欄に数字以外の文字を入力した時のエラーが文字化けしていたというところでした。 Modelは [DisplayName("年月")] public int year_month { get; set; } Viewは、 @Html.TextBox("ym", null, new { @class = "form-control", required = "required", @placeholder = "年月を入力" }) @Html.ValidationMessage("ym", "", new { @class = "text-danger" }) 以上でございます。
退会済みユーザー

退会済みユーザー

2018/12/25 09:25

対症療法でなく、上の回答に書いた (1), (2), (3) をきちんとやるのがお勧めです。ユーザー入力の検証は、きちんとやらないと、文字化け程度では済まないセキュリティ上の問題が起きる可能性が大ですので。
guest

0

ベストアンサー

パッケージを最新化しても駄目ですか?
https://qiita.com/qyen/items/fce0f17649f7d72d58f3

投稿2018/12/25 07:41

workaholist

総合スコア559

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

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

masterofpuppets

2018/12/25 07:49

Microsoft.AspNet.Mvc.ja Microsoft.AspNet.Razor.ja Microsoft.AspNet.WebPages.ja 上記のパッケージを最新にした結果、無事、 『値 'aa' は無効です。』と表示されました。 誠にありがとうございました。御礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問