Заполнитель поля ввода MVC4
Поддерживает ли MVC4
по умолчанию поддержку placeholders
для генерируемых полей ввода? Я ничего не нашел, поэтому я пытаюсь реализовать свои собственные, но, к сожалению, Prompt = "E-Mail"
не передается ViewData.ModelMetadata.Watermark
при генерации управления. Зачем?
Model
public class LogOnModel
{
[Required]
[Display(Name = "E-Mail", Prompt = "E-Mail")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
}
@Html.TextBoxFor(m => m.Email, new { placeholder = ViewData.ModelMetadata.Watermark })
Я получаю html-код, где тег placeholder
не имеет никакого текста
<input data-val="true" data-val-regex="Please enter a valid e-mail address" data-val-required="The E-Mail field is required." id="Email" name="Email" placeholder="" type="text" value="" class="valid">
Ответы
Ответ 1
Альтернативой использованию плагина является использование шаблона редактора. Вам нужно создать файл шаблона в папке Shared\EditorTemplates
и вызвать его String.cshtml
. Затем поместите это в этот файл:
@Html.TextBox("",ViewData.TemplateInfo.FormattedModelValue,
new { placeholder = ViewData.ModelMetadata.Watermark })
Затем используйте его в своем представлении следующим образом:
@Html.EditorFor(m=>Model.UnitPercent)
В обратном направлении это работает для свойств типа string
, и вам нужно будет создать шаблон для каждого type
, для которого требуется поддержка водяного знака.
Ответ 2
Я сделал это
Поле в модели:
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
Бритва:
<li>
@Html.TextBoxFor(m => m.UserName, new { placeholder = Html.DisplayNameFor(n => n.UserName)})
</li>
Ответ 3
Конечно:
@Html.TextBoxFor(x => x.Email, new { @placeholder = "Email" })
Ответ 4
Вы можете легко добавить класс Css, placeholder и т.д., как показано ниже:
@Html.TextBoxFor(m => m.Name, new { @class = "form-control", placeholder="Name" })
Надеюсь, что это поможет
Ответ 5
Это работает:
@Html.TextBox("name", null, new { placeholder = "Text" })
Ответ 6
Есть такие способы привязки заполнитель к объекту:
1) Использование аннотаций данных MVC:
Модель:
[Required]
[Display(Prompt = "Enter Your First Name")]
public string FirstName { get; set; }
Синтаксис бритвы:
@Html.TextBoxFor(m => m.FirstName, new { placeholder = @Html.DisplayNameFor(n => n.UserName)})
2) Использование аннотаций данных MVC Но с DisplayName:
Модель:
[Required]
[DisplayName("Enter Your First Name")]
public string FirstName { get; set; }
Синтаксис бритвы:
@Html.TextBoxFor(m => m.FirstName, new { placeholder = @Html.DisplayNameFor(n => n.UserName)})
3) Без использования аннотации данных MVC (рекомендуется):
Синтаксис бритвы:
@Html.TextBoxFor(m => m.FirstName, new { @placeholder = "Enter Your First Name")
Ответ 7
По умолчанию это не так. Однако вы можете использовать пакет MVCHtml5Toolkit NuGet, который имеет HTML-помощники, которые могут выводить HTML5. В вашем примере после установки набора инструментов вы можете использовать следующий вызов HTML-помощника:
@Html.Html5TextBoxFor(m => m.Email, InputTypes.InputType.Email)
В результате вы получите следующий HTML:
<input id="Email" name="Email" placeholder="E-Mail" type="Email" value="">
Как видно, заполнитель теперь корректно отображается.
Ответ 8
Правильное решение для получения значения Prompt
в нетемплифицированном контексте управления:
@Html.TextBoxFor(model => model.Email,
new { placeholder = ModelMetadata.FromLambdaExpression(m => m.Email, ViewData).Watermark }
)
Это также не приведет к удвоению текста водяного знака.
Ответ 9
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control",@placeholder = "Name" })
Ответ 10
Попробуйте следующее:
@Html.TextbBoxFor(x=>x.Email,new { @[email protected]}
Если это возможно или что может быть способом