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

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

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

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

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

MVC

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

ASP.NET

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

Q&A

解決済

1回答

3232閲覧

Requiredを定義したのにエラーメッセージが表示されない

退会済みユーザー

退会済みユーザー

総合スコア0

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

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

MVC

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

ASP.NET

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

0グッド

0クリップ

投稿2021/09/12 02:51

編集2021/09/12 05:04

前提・実現したいこと

asp.net coreで掲示板の開発をしております。
フォームに必須入力を設定したく未入力の場合にエラーメッセージを表示したいです。

発生している問題・エラーメッセージ

Required属性を付与し、検証は正しく動作しているのですがエラーメッセージが表示されません。

#補足情報
言語:C#
フレームワーク:.net core 3.1
ツール:Visual Studio2019 Community
開発環境のOS windows10
visual studioテンプレート ASP.NET core Web アプリ(Model-View-Controller)

Model namespace board.Models { public class BoardData { public int BoardDataId { get; set; } [Column(TypeName = "varchar(100)")] [Required(ErrorMessage = "{0}は必須です。")] [Display(Name = "名前")] public string view_Name { get; set; } [Required(ErrorMessage = "{0}は必須です。")] [Display(Name = "メッセージ")] public string text { get; set; } public DateTime post_date { get; set; } } }
Model namespace board.Models { public class DateModelView { public BoardData BoardData { set; get; } public IEnumerable<BoardData> boardDatas { get; set; } } }
view @model board.Models.DateModelView @{ ViewData["Title"] = "Index"; var succes = TempData["succes"]; var error = TempData["error"]; } <h1>Index</h1> <p>@succes</p> <p> <a asp-action="Create">Create New</a> </p> <form asp-action="Create"> <div> <label asp-for="BoardData.view_Name">表示名</label> <input asp-for="BoardData.view_Name" type="text" name="view_Name" value="" /> <span asp-validation-for="BoardData.view_Name" class="text-danger"></span> </div> <div> <label asp-for="BoardData.text">一言メッセージ</label> <textarea asp-for="BoardData.text" name="text"></textarea> <span asp-validation-for="BoardData.view_Name" class="text-danger"></span> </div> <input type="submit" name="btn_submit" value="書き込む"> </form> <table class="table"> <thead> <tr> <th> @Html.DisplayNameFor(model => model.BoardData.view_Name) </th> <th> @Html.DisplayNameFor(model => model.BoardData.text) </th> <th> @Html.DisplayNameFor(model => model.BoardData.post_date) </th> </tr> </thead> <tbody> @foreach (var item in Model.boardDatas) { <tr> <td> @Html.DisplayFor(modelItem => item.view_Name) </td> <td> @Html.DisplayFor(modelItem => item.text) </td> <td> @Html.DisplayFor(modelItem => item.post_date) </td> <td> <a asp-action="Edit" asp-route-id="@item.BoardDataId">Edit</a> | <a asp-action="Details" asp-route-id="@item.BoardDataId">Details</a> | <a asp-action="Delete" asp-route-id="@item.BoardDataId">Delete</a> </td> </tr> } </tbody> </table>
Controller public IActionResult Create() { TempData["succes"] = ""; TempData["error"] = ""; return View(); } // POST: BoardDatas/Create // To protect from overposting attacks, enable the specific properties you want to bind to, for // more details, see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("BoardDataId,view_Name,text")] BoardData boardData) { if (ModelState.IsValid) { _context.Entry(boardData).Property("post_date").CurrentValue = DateTime.Now; _context.Add(boardData); await _context.SaveChangesAsync(); TempData["succes"] = "メッセージを書き込みました。"; return RedirectToAction(nameof(Index)); } return View("Index", dateModelView); }

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/12 02:59

ASP.NET のタグをつけてください。開発環境の OS を書いてください。プロジェクトを作成するときに Visual Studio のテンプレートを使ったと思いますが、それを書いてください。追加情報は質問欄を編集して追記願います。
退会済みユーザー

退会済みユーザー

2021/09/12 03:07

思い出した。あなたは過去の質問で質問に対してコメントをもらっているのに無視してスレッドを放棄したよね。また同じことになるのかな。
退会済みユーザー

退会済みユーザー

2021/09/12 06:02

クライアント側で検証を行うスクリプトの設定が View にありませんが、「検証は正しく動作しているのですが」とのことなので、サーバー側の検証は行われていて、検証結果 NG だと、 return View("Index", dateModelView); となるようですが、その意図は何ですか? 同じページに戻さないとエラーの表示はできるはずはないと思うのですが。
退会済みユーザー

退会済みユーザー

2021/09/12 06:24

入力画面をIndex.cshtmlに作成したのでそちらに飛ぶように設定しています。
退会済みユーザー

退会済みユーザー

2021/09/12 06:37

検証 NG の場合は元の画面に差し戻すようにしないとダメだと思います。
退会済みユーザー

退会済みユーザー

2021/09/12 08:08

解決できました。ありがとうございました。
退会済みユーザー

退会済みユーザー

2021/09/12 08:15

お手数ですが解決した方法を回答欄に書いてこのスレッドはクローズ願います。
guest

回答1

0

ベストアンサー

<input asp-for="BoardData.view_Name" type="text" name="view_Name" value="" /><textarea asp-for="BoardData.text" name="text"></textarea>のname部分をそれぞれBoardData.view_NameとBoardData.textに書き直したら動きました。

投稿2021/09/12 08:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/09/12 21:23

他にもやったことがあるのでは?
退会済みユーザー

退会済みユーザー

2021/09/15 11:01

元の画面に戻すようにreturn文を書き換えました。
退会済みユーザー

退会済みユーザー

2021/09/15 11:20

Create メソッドの引数も変えたのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問