Tengo un sitio ASP.NET 4 en el que quiero permitir que las personas pongan '<' en su contraseña. Sin embargo, .NET se interpone bloqueando (lo que ve como) un intento de poner HTML en un campo de formulario. Sé que puedo desactivar la validación de entrada por completo, pero solo quiero desactivarlo para este campo. ¿Alguien sabe una manera fácil de hacer eso?Desactivar validación de entrada para un solo campo
Respuesta
Solo puede desactivar la validación de entrada para toda la página. La única solución que se me ocurre es desactivar la validación de entrada y luego eliminar todos los demás campos de entrada (sin contraseña) usando algo como Anti-XSS.
Gracias por señalar un enlace sin citar el ejemplo. Enlace muerto ahora –
No es un ejemplo, era un enlace a una biblioteca que proporciona funcionalidad anti-xss. Ahora en https://www.nuget.org/packages/AntiXSS/4.3.0. –
Bien, lo siento, pero ahora no puedo deshacer mi voto negativo. ¿Podrías editar tu publicación con el nuevo enlace para poder hacerlo? –
Puede desactivar la validación de entrada para la acción MVC con el ValidateInputAttribute. Como solo acepta el nombre de usuario/contraseña (supongo), debería poder eliminar la entrada de los caracteres no válidos. Use el Microsoft Web Protection Library para hacer eso.
Esto es Webforms, no MVC, y yo tener muchas entradas en esta página. De lo contrario, eso funcionaría genial :) – eliah
Mah mal. Existe una propiedad ValidateRequest en la directiva @Page que puede usar para desactivar la validación solo para esa página en particular, pero creo que es lo más detallada que puede obtener. –
Nota en ASP.NET 4 y superior para obtener ValidateRequest en la directiva @Page para que funcione, debe agregar <httpRuntime requestValidationMode="2.0" />
a web.config. Ver esta página para obtener más información: http://www.asp.net/whitepapers/aspnet4/breaking-changes
Pero esta es mi enfoque preferido:
namespace Controls
{
public class HtmlTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
bool res = base.LoadPostData(postDataKey, postCollection);
Text = Text.Replace("<", "<").Replace(">", ">").Replace("&", "&");
return res;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "htmlTextBox" + UniqueID, "try { var item = document.getElementsByName('" + UniqueID + "')[0]; item.value = item.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); } catch (err) {}");
}
}
}
Y luego registrar el control en web.config:
<system.web>
<pages>
<controls>
<add tagPrefix="uc1" namespace="Controls" />
</controls>
</pages>
</system.web>
De esta manera sólo se puede utilizar <uc1:HtmlTextBox runat="server" />
si desea permitir que el cuadro de texto publique html, pero otros controles en la página seguirán bloqueados de publicar html a diferencia del enfoque de desactivar ValidateRequest.
Esto es posible. Simplemente agregue [AllowHtml]
en la propiedad que no debe ser validada.
ver ValidateInputAttribute does not contain a definition for Exclude
Esto es ahora posible con .NET 4.5.
actualización de su Web.config:
<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
A continuación, establezca ValidateRequestMode="Disabled"
en sus controles de contraseñas:
<asp:YourControl id="YourControl" runat="server" ValidateRequestMode="Disabled"/>
Nota - después de actualizar web.config, usted podría encontrarse con el error WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'.
Ver ASP.Net 2012 Unobtrusive Validation with jQuery de más información sobre eso.
Más información sobre RequestValidationMode 4.5: requestValidationMode 4.5 vs 2.0
- 1. Validación de campo de un solo botón
- 2. Cómo desactivar el teclado de iPhone para un campo de entrada específico en la página web
- 3. Validación JQuery - Deshabilitar onfocusout para un solo campo
- 4. Desactivar un campo de entrada si el campo está vacío segunda entrada
- 5. jQuery Validate Plugin - Activación de validación de un solo campo
- 6. jQuery deshabilitar la validación de reglas en un solo campo
- 7. MVC 3 discreta validación - condicionalmente desactivar/activar la validación
- 8. Validación de entrada de usuario para JOptionPane.showInputDialog
- 9. jQuery Mobile: campo de entrada de solo números?
- 10. MomentJS: ¿pensado para la validación de entrada?
- 11. jquery validación solo para controles visibles
- 12. entrada y validación de jQuery Watermarked
- 13. Entrada de cuadro de validación
- 14. Escenarios de pepinillos para validación de entrada de usuario
- 15. jQuery validación & ignorar campo
- 16. jQuery validate valida solo un campo
- 17. Validación de entrada CheckBox en Django
- 18. ASP .NET MVC Desactivar validación del lado del cliente en el nivel por campo
- 19. ¿Cómo se prueba para un campo de entrada vacío?
- 20. Desactivar VS2010 Validación de plantilla T4
- 21. Cómo actualizar el valor de un solo campo invocando la validación adecuada
- 22. Cómo diseñar solo un tipo de campo de entrada sin afectar también a otros tipos de entrada con CSS
- 23. Hacer que un campo de entrada de texto parezca deshabilitado, pero actuar como solo
- 24. Entrada de entrada personalizada para UITextField, ¿cómo dirijo la entrada de regreso al campo de texto?
- 25. Prevenir el enfoque en el campo cuando falla la validación
- 26. En la validación de Spring MVC, ¿es posible mostrar solo un mensaje de error por campo a la vez?
- 27. ¿Cómo uso jquery para validar un campo de entrada en el cambio?
- 28. Quitar campo de mensaje de validación objeto
- 29. ¿Es posible asignar múltiples grupos de validación a un solo control de validación?
- 30. validación de iphone para campo de texto agregado en uialertview
¿Hay alguna razón especial que necesita
@ eddy556 - ¿necesita una razón especial? – Oded
@Oded - Claro que sí, puedo entender las ventajas de tener un personaje extra, pero si eso es cierto, ¿por qué solo quiere permitir viene a la mente. –