Поскольку LabelledPasswordFor
является вашей собственной реализацией, вы можете изменить его, чтобы он также поддерживал autocomplete
. Ниже приведен пример.
Я решил назвать его, используя true/false
, который затем переводится в "on" / "new-password"
, поэтому точные детали атрибута не имеют значения для вызывающих абонентов.
public static MvcHtmlString LabelledPasswordFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression,
bool autocomplete = true)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var displayName = html.RawDisplayNameFor(expression);
var htmlAttr = new Dictionary<string, object>();
htmlAttr.Add("placeholder", displayName);
htmlAttr.Add("autocomplete", autocomplete ? "on" : "new-password");
htmlAttr.Add("class", metadata.IsRequired ? "requiredInput" : "");
var editor = html.PasswordFor(expression, htmlAttr);
var validator = html.ValidationMessageFor(expression);
return new MvcHtmlString(editor.ToHtmlString() + validator.ToHtmlString());
}
Использование:
<div>@Html.LabelledPasswordFor(m => m.Password, autocomplete: false)</div>