Я изо всех сил пытаюсь отобразить водяной знак (так называемый placeholder) на входах формы MVC3.ModelMetadata.Watermark и MVC Просмотр моделей
Существует уже несколько сообщений здесь говорят включая довольно сосредоточены один здесь:
Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?
На этих постах, совет сделал для создания подправили шаблоны Html.TextBox. В моем случае, мой актив заключается в том, что мне не нужен какой-либо редакторский шаблон, поскольку я настраиваю их inline.
лучше, чем длинные переговоры, вот соответствующая часть фактического кода:
~/Модели/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 })
...
}
}
Результат заключается в том, что тег httml-заполнителя правильно отображается на моей отображаемой веб-странице, но пуст, хотя тег Name заполнен правильно, даже без украшения DisplayName, установленного в моем представлении модели.
...
<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, у меня нет никакого« заполнителя », отображаемого на отображаемой веб-странице. Что хорошо, эта часть вызова окончательно прекрасна.
Заранее спасибо за любую помощь по этому вопросу ...
Николя.
Edit:
Что если я создаю больше переменной в моей модели.
Например:
public string firstFieldPrompt { get { return "bla"; } set { } }
, а затем
@Html.TextBoxFor(x => x.firstFieldValue, new { @class = "myInputStyle", @placeholder = x => x.FirstFieldPrompt })
?
жесткий, не так ли? :) – user1288337