Как добавить текст-заполнитель из модели в представление MVC?
У меня есть модель:
[DataType(DataType.EmailAddress)]
[DisplayFormat(ConvertEmptyStringToNull = true)]
[Display(Prompt = "Email Address")]
public string Email { get; set; }
Я пытаюсь получить "приглашение" для отображения в тексте-заполнителе полученного текстового поля со следующим:
@Html.EditorFor(model => model.Email,
new { htmlAttributes = new { @class = "form-control input-md",
placeholder = @ViewData.ModelMetadata.Watermark } })
Когда я просматриваю сгенерированный HTML, я получаю "placeholder" во входном теге. В соответствии с тем, что я прочитал ViewData.ModelMetadata.Watermark должен работать. Каков правильный способ получить этот текст заполнителя?
Ответы
Ответ 1
Это решило мою проблему:
@Html.EditorFor(model => model.Email, new { htmlAttributes =
new { @class = "form-control input-sm",
placeholder = @Html.DisplayNameFor(m=>m.Email) } })
Код, который сделал это, был
placeholder = @Html.DisplayNameFor(m=>m.Email)
Ответ 2
Немного поздно, но если кто-то все еще ищет его...
@Html.EditorFor(model => model.Email,
new { htmlAttributes = new { @class = "form-control input-md",
@placeholder = "Whatever you want as a placeholder" } })
Это прекрасно и чисто!
Ответ 3
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" , @placeholder = "Username" })
Ответ 4
Используйте TextBoxДля так:
@Html.TextBoxFor(model => model.LastName, new{placeholder="Last Name"})
Ответ 5
Использовать TextBoxFor:
@Html.TextBoxFor(m => m.Email, new { @class = "form-control", @placeholder = Html.DisplayNameFor(m => m.Email) })
Ответ 6
В вашем методе контроллера, который отображает представление, скажите
ViewData["Name"] = "blabbity blah";
затем
@Html.TextBoxFor(u => u.Company, new { @placeholder = @ViewData["Name"] })
На самом деле лучше, но вы можете это сделать.
public ActionResult Index()
{
NewLogin n = new ClassModel().PopModel();
n.Company = "fsdfsdf";
return View(n);
}
@Html.TextBoxFor(u => u.Company, new { @placeholder = Model.Company })
Ответ 7
Правильное решение для получения значения Prompt
вместо DisplayName
в нетемплифицированном контексте управления выглядит следующим образом:
@Html.EditorFor(model => model.Email,
new { @class = "form-control input-md",
placeholder = ModelMetadata.FromLambdaExpression(m => m.Email, ViewData).Watermark
})
Это также - в отличие от принятого решения с использованием @Html.DisplayNameFor(m=>m.Email)
- не сбрасывает двойной текст водяного знака, который в зависимости от текста и отображаемого языка может быть проблемой.
Ответ 8
Проверьте ответы на этот вопрос, на который ответил aleady (несколько раз).
@Html.EditorFor
использует шаблоны, поэтому подход к этой проблеме заключается в использовании настраиваемого шаблона.
Ответ 9
вы можете использовать его следующим образом для даты, которая также даст вам сборщик "datetime".
[DisplayFormat (DataFormatString = "{0: yyyy-MM-dd}", ApplyFormatInEditMode = true)]