Я изо всех сил пытаюсь отобразить водяной знак (так называемый заполнитель) на входах моей формы MVC3.
Здесь уже есть несколько сообщений, в том числе довольно сфокусированных:
HTML5 Заполнители с .NET MVC 3 Razor Editor для расширения?
В этих сообщениях дается совет по созданию измененных шаблонов html.TextBox.В моем случае мой актив заключается в том, что мне не нужны никакие шаблоны редактора, так как я настраиваю их встроенными.
Лучше, чем длинные разговоры, вот соответствующая часть реального кода:
~ / Models / myModel.cs
namespace myProject.Models {
public class myFormModel {
...
[Display(Name = "firstFieldName", Prompt = "firstFieldPrompt")]
public string firstFieldValue { get; set; }
...
}
}
~ / Controllers / 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-тег-заполнитель корректно отображается на моей отображаемой веб-странице, но он пуст, хотя тег Name заполнен правильно, даже если для свойства модели представления не задано оформление DisplayName.
http://localhost/testpage
...
<input type="text" value="" placeholder="" name="firstFieldName" id="firstFieldName" class="myInputStyle">
...
Что мне здесь не хватает?Я действительно пытался создать оба шаблона редактора (MultilineText и String) в правильной папке (~ / Views / Shared / EditorTemplates /), но я предполагаю, что они никогда не вызываются, так как я использую «Html.TextBoxFor», а не «Html».TextBox "...
Другое дело, если я удалю" @placeholder = ViewData.ModelMetadata.Watermark "из вызова @ Html.TextBoxFor, у меня не отобразится" заполнитель "на отображаемой веб-странице.Что хорошо, эта часть разговора определенно хороша.
Заранее благодарен за любую помощь в этом вопросе ...
Николас.
Редактировать:
А если я создам больше переменных в моей модели.
Например:
public string firstFieldPrompt { get { return "bla"; } set { } }
, а затем
@Html.TextBoxFor(x => x.firstFieldValue, new { @class = "myInputStyle", @placeholder = x => x.FirstFieldPrompt })
?