remove recordar password off new funciona evitar disable desactivar contraseña chrome autocompletar html asp.net-mvc-2 autocomplete editorfor

html - recordar - ¿Cómo deshabilitar la función de autocompletar del campo de entrada con EditorFor?



evitar recordar contraseña html (2)

<%= Html.EditorFor(product => product.Name) %>

Necesito que la salida generada tenga el conjunto de atributos autocompletar = "apagado".

¿Qué me estoy perdiendo?

Editar: estoy buscando un método de extensión para Editor. Para el que acepta el diccionario de clave / valor para atributos, así puedo llamarlo así: <%= Html.EditorFor(product => product.Name, new { autocomplete = "off" } ) %>

Aquí está hecho para LabelFor, pero es necesario ajustarlo para EditorFor

public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes) { return LabelFor(html, expression, new RouteValueDictionary(htmlAttributes)); } public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes) { ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData); string htmlFieldName = ExpressionHelper.GetExpressionText(expression); string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split(''.'').Last(); if (String.IsNullOrEmpty(labelText)) { return MvcHtmlString.Empty; } TagBuilder tag = new TagBuilder("label"); tag.MergeAttributes(htmlAttributes); tag.Attributes.Add("for", html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName)); tag.SetInnerText(labelText); return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); }

Edit2: me di cuenta de que no se puede llamar EditorFor porque ya existe un Editor reemplazado para el que acepta un tipo anónimo, consulte aquí http://msdn.microsoft.com/en-us/library/ff406462.aspx .. de todos modos, puede nombrarlo de manera diferente, no grandes.


Tendrá que usar una plantilla personalizada que genere el elemento de entrada con el atributo o puede agregar algo de javascript a la página para agregar el atributo del lado del cliente.

<%= Html.EditorFor( product => product.Name, "NoAutocompleteTextBox" ) %>

Luego, en Shared / EditorTemplates necesitas un NoAutocompleteTextBox.ascx que defina

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> <%= Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { autocomplete = "off" }) %>

o, la manera jQuery, para configurarlo en todas las entradas de texto

$(function() { $(''input[type=text]'').attr(''autocomplete'',''off''); });


public static MvcHtmlString EditorForAttr<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes) { return EditorForAttr(html, expression, new RouteValueDictionary(htmlAttributes)); } public static MvcHtmlString EditorForAttr<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IDictionary<string, object> htmlAttributes) { ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData); string htmlFieldName = ExpressionHelper.GetExpressionText(expression); TagBuilder tag = new TagBuilder("input"); tag.GenerateId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName)); tag.MergeAttribute("name", htmlFieldName); tag.MergeAttribute("type", "text"); tag.MergeAttribute("value", metadata.Model == null ? "" : metadata.Model.ToString()); // Not sure if this is correct. tag.MergeAttributes(htmlAttributes, true); return MvcHtmlString.Create(tag.ToString(TagRenderMode.SelfClosing)); }