Подтвердить что ты не робот

Заполнитель поля ввода 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">
4b9b3361

Ответ 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]}

Если это возможно или что может быть способом