MVC3フォーム入力にウォーターマーク(いわゆるプレースホルダ)を表示するのに苦労しています。ModelMetadata.WatermarkとMVCビューモデル
すでにかなりここ1焦点を当てなどの話をダウンここではいくつかの記事があります:これらの記事で
Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?
、アドバイスを微調整html.TextBoxテンプレートを作成するために行われます。 私の場合、自分の資産は、私がインラインで調整しているので、エディタテンプレートは必要ありません。
ここでは、長い交渉よりも良いが、実際のコードの関連する部分である:
〜/モデル/ myModel.cs
namespace myProject.Models {
public class myFormModel {
...
[Display(Name = "firstFieldName", Prompt = "firstFieldPrompt")]
public string firstFieldValue { get; set; }
...
}
}
〜/コントローラ/ myFormSurfaceController.cs
namespace myProject.Controllers {
public class myFormSurfaceController : SurfaceController {
...
[ChildActionOnly]
public PartialViewResult myForm()
{
return PartialView("myPartialView", new myFormModel());
}
...
[HttpPost, ValidateAntiForgeryToken]
public ActionResult handleMyFormSubmit(myFormModel model) {...}
...
}
}
〜/ Views/myProject/Partial/myPartialView.cshtml
@model myFormModel
@{
using (Html.BeginUmbracoForm("handleMyFormSubmit", "myFormSurface", null, new Dictionary<string, object> { { "class", "myFormStyle" }, { "id", "myFormId" } }))
{
...
@Html.TextBoxFor(x => x.firstFieldValue, new { @class = "myInputStyle", @placeholder = ViewData.ModelMetadata.Watermark })
...
}
}
結果、プレースホルダーのhtmlタグがレンダリングされたWebページ上に正しく表示されていますが、ビュー・モデルのプロパティーにDisplayNameデコレーションが設定されていなくてもNameタグが正しく埋められていても空です。
...
<input type="text" value="" placeholder="" name="firstFieldName" id="firstFieldName" class="myInputStyle">
...
私はここで何をしないのですか?正しいフォルダ(〜/ Views/Shared/EditorTemplates /)に両方のエディタテンプレート(MultilineTextとString)を作成しようとしましたが、Html.TextBoxForではなくHtml.ThreadBoxForを使用しているので、 ... TextBox "...
他のものは、@ Html.TextBoxForの呼び出しから" @ placeholder = ViewData.ModelMetadata.Watermark "を削除した場合、レンダリングされたWebページに「プレースホルダ」は表示されません。どちらが良いですか、コールのこの部分は間違いなく素晴らしいです。その点上の任意の助けを事前に
おかげで...
ニコラス。
編集:
私は私のモデルでより多くの変数を作成した場合について。例えば
:
public string firstFieldPrompt { get { return "bla"; } set { } }
、その後
@Html.TextBoxFor(x => x.firstFieldValue, new { @class = "myInputStyle", @placeholder = x => x.FirstFieldPrompt })
?
厳しい方ではないですか? :) – user1288337