2017-04-19 23 views
0

現在ASP.Net MVCアプリケーションを作成中ですCSHTMLの入力要素にプレースホルダテキストを追加しました

CSHTMLで入力ボックスを作成しました。

@Html.EditorFor(model => model.Test, new { htmlAttributes = new { @class = "form-control"} }) 

コントローラから文字列のコンテンツを取得し、プレースホルダテキストとして追加します。私は、次の

@Html.EditorFor(model => model.Test, new { htmlAttributes = new { @class = "form-control", placeholder = @Html.DisplayFor(model => model.Test) } }) 

を試みたしかし、それはそうのようなプレースホルダを設定します。私は代わりに@Html.DisplayNameForを使用する場合は、変数の名前Testにプレースホルダを設定しますが、私は実際の文字列のコンテンツを望んplaceholder="" 。私はViewbagを使ってビューにテキストを渡すことができますが、このようにする方法があるはずです。

ご協力いただきまして誠にありがとうございます。

+1

を 'プレースホルダ= Model.Test''と 'プレースホルダ= @ Html.DisplayFor(モデル=> model.Test)を変更してみてください。 – Seididieci

+0

次のエラーが発生します。 System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。' System.Web.Mvc.WebViewPage .Model.getがnullを返しました。 – RichyJ89

+0

コントローラでは、モデルのインスタンスをビューに渡していることを確認してください。 – Seididieci

答えて

0

@Html.DisplayFor()をプレースホルダとして使用することはできませんが、Html.DisplayNameFor()を使用できます。

例:

@Html.EditorFor(model => model.Test, new { htmlAttributes = new { @class = "form-control", @placeholder = "Your Place Holder" } }) 

OR

@Html.EditorFor(model => model.Test, new { htmlAttributes = new { @class = "form-control", placeholder = @Html.DisplayNameFor(model => model.Test) } }) 
+0

しかし、それは私が望むものではありません。これにより、プレースホルダがcshtmlファイルにハードコードされた文字列に設定されます。私がしたいのは、文字列変数の内容をプレースホルダ属性に入れることです。 – RichyJ89

+0

2番目のオプションを探すかもし​​れません。 – Ashiquzzaman

+0

これは、プレースホルダを、変数が含む文字列ではなく変数の名前に設定します。 – RichyJ89

0

は、私はあなたがこのようなモデルの妥当で[表示(名前= "テキスト")]属性を追加する必要があると思います:

[Display (Name="Name Of Client:")] 
Public string Name {get; set;} 
0

viに渡すモデルのプロパティをviに渡すew。

文字列をそのプロパティに割り当てます。その後

Model.SomeName= YourVariableName; 

次のように試してみてください -

@Html.EditorFor(model => model.Test, new { htmlAttributes = new { @class = "form-control", placeholder = @Model.SomeName } 
関連する問題