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

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

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

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

MVC

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

ASP.NET

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

Q&A

解決済

1回答

6217閲覧

ASP.NET MVC5 @Html.EditorFor()でvalue属性が設定できません

step.step.step

総合スコア4

C#

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

MVC

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

ASP.NET

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

0グッド

0クリップ

投稿2021/06/13 14:53

visual studio 2019
ASP.NET MVC5
で勉強しています。

タイトルどおりなのですが、
@Html.EditorFor()でvalue属性が設定できません。

c#

1<div class="col-md-10"> 2 @Html.EditorFor(model => model.YMD,new { htmlAttributes = new { @class = "form-control",@value = "2021/06/13" } }) 3 </div>

としているのですが、ブラウザで確認すると

html

1<input class="form-control text-box single-line" id="YMD" name="YMD" type="text" value="" />

となってしまい、valueに"2021/06/13"が設定されていません。

ひょっとするとすごく簡単なことなのかもですが、どなたか教えていただけませんでしょうか。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/06/13 22:42 編集

Model をコントローラで設定してビューに渡していると思いますが、それはどのように設定されているのでしょう? value は Model から設定するのが普通のやり方なのですが・・・
guest

回答1

0

ベストアンサー

質問のコメントの私のコメント、

Model をコントローラで設定してビューに渡していると思いますが、それはどのように設定されているのでしょう?

value は Model から設定するのが普通のやり方なのですが・・・

に返事がないので、そのあたりが不明ですが、こうすれば html input 要素の value 属性に設定できるという方法を回答として書いておきます。

@Html.EditorFor(model => model.YMD ... となっているように、それからレンダリングされる html input 要素の value 属性に設定される値は Controller から View に渡される Model から取得するのが基本です。

質問者さんのやり方のように @Html.EditorFor の引数で value = "2021/06/13" のように設定しても、model => model.YMD の方で上書きされてしまうようです。たぶん、質問者さんのケースでは Conroller から View には Model は渡していないので "" で上書きされたのだと思います。

なので、Controller から View に Model を渡せば、例えば下記のようにすれば、

** Controller / Action Method **

public ActionResult Value() { var model = new Category { CategoryID = 1, CategoryName = "2021/06/13" }; return View(model); }

View

@model Mvc5App.Controllers.Category ・・・中略・・・ @Html.EditorFor(model => model.CategoryName, new { htmlAttributes = new { @class = "form-control" } }) ・・・後略・・・

以下の通り、Controller / Action Method から渡した値が表示されます。もちろん、それからレンダリングされる html input 要素の value 属性に設定されます。

イメージ説明

以下は本題とは関係ない話かもしれませんが念のため書いておきます。

HTML ヘルパー EditorFor から生成される html 要素に任意の属性を付与できるようになったのは MVC 5.1 からです。

class と違って、value は C# の予約語ではありませんので、@ を付与する必要はないです。

投稿2021/06/14 02:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

step.step.step

2021/06/14 14:24

SurferOnWww さんの回答どおりで上手く表示できました! > @Html.EditorFor(model => model.YMD ... となっているように、それからレンダリングされる html input 要素の value 属性に設定される値は Controller から View に渡される Model から取得するのが基本です。 そうなんですね。ぜんぜん、知りませんでした。 > HTML ヘルパー EditorFor から生成される html 要素に任意の属性を付与できるようになったのは MVC 5.1 からです。 > class と違って、value は C# の予約語ではありませんので、@ を付与する必要はないです。 これもまったく知らなかったです。。。 ありがとうございました。
step.step.step

2021/06/14 14:50

でも、SurferOnWww さんのように回答に行き着くにはどうやればいいんだろう。 本見てもネットみても答えにたどり着けなかったし、かすりもしなかったなぁ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問