¿Es posible utilizar las Anotaciones de datos de ASP.NET MVC 2 para permitir solo caracteres (sin número), o incluso proporcionar una lista blanca de cadenas permitidas? ¿Ejemplo?Anotaciones de datos - No permitir números, o solo permitir cadenas dadas
12
A
Respuesta
27
Utilice RegularExpressionAttribute.
Algo así como
[RegularExpression("^[a-zA-Z ]*$")]
igualaría a-z mayúsculas y minúsculas y espacios.
Una lista blanca sería algo como
[RegularExpression("white|list")]
que sólo debe permitir que "blanco" y "lista"
[RegularExpression("^\D*$")]
\ D representa caracteres no numéricos por lo que lo anterior debe permitir que una cadena con cualquier cosa menos 0-9.
Las expresiones regulares son difíciles pero hay algunas herramientas de prueba de votos en línea como: http://gskinner.com/RegExr/
3
Sí. Use "[RegularExpression]"
Este es un gran sitio en la expresión regular http://www.regexlib.com/CheatSheet.aspx
1
Usted puede escribir su propio validador que tiene un mejor rendimiento que una expresión regular.
Aquí me escribió un validador lista blanca para las propiedades int:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace Utils
{
/// <summary>
/// Define an attribute that validate a property againts a white list
/// Note that currently it only supports int type
/// </summary>
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
sealed public class WhiteListAttribute : ValidationAttribute
{
/// <summary>
/// The White List
/// </summary>
public IEnumerable<int> WhiteList
{
get;
}
/// <summary>
/// The only constructor
/// </summary>
/// <param name="whiteList"></param>
public WhiteListAttribute(params int[] whiteList)
{
WhiteList = new List<int>(whiteList);
}
/// <summary>
/// Validation occurs here
/// </summary>
/// <param name="value">Value to be validate</param>
/// <returns></returns>
public override bool IsValid(object value)
{
return WhiteList.Contains((int)value);
}
/// <summary>
/// Get the proper error message
/// </summary>
/// <param name="name">Name of the property that has error</param>
/// <returns></returns>
public override string FormatErrorMessage(string name)
{
return $"{name} must have one of these values: {String.Join(",", WhiteList)}";
}
}
}
la muestra Uso:
[WhiteList(2, 4, 5, 6)]
public int Number { get; set; }
Cuestiones relacionadas
- 1. regex permitir solo números o cadena vacía
- 2. ¿Permitir solo números en el cuadro de texto en GWT?
- 3. Permitir solo números y puntos en la secuencia de comandos
- 4. javascript expresión regular, permitir solo números y comas
- 5. TinyMCE, permitir datos atributo
- 6. Robots.txt: permitir solo mayor SE
- 7. Tastypie - Permitir permisos de solo lectura para usuarios no autenticados al permitir permisos de escritura autorizados
- 8. ¿Permitir solo una instancia de script python?
- 9. C# Regex para permitir solo el alfanumérico
- 10. Regex permitir dígitos y un solo punto
- 11. Permitir solo caracteres alfanuméricos para un UITextField
- 12. postgres regexp_replace queremos permitir solo a-z y A-Z
- 13. Regex para permitir números y un solo guión en el medio
- 14. Cómo permitir que el usuario ingrese solo las letras, sin números y otros caracteres
- 15. ¿Cómo valido un cuadro de texto para permitir solo letras y números usando una expresión regular?
- 16. No permitir o Noindex en Subdominio con robots.txt
- 17. ¿Por qué permitir la concatenación de cadenas literales?
- 18. Robots.txt No permitir ciertos nombres de carpeta
- 19. No permitir múltiples cuentas en AccountManager
- 20. Expresión regular: Permitir letras, números y espacios (con al menos una letra o número)
- 21. jQuery UI Datepicker - permitir solo ciertos días de la semana
- 22. Permitir solo caracteres alfanuméricos en el cuadro de texto
- 23. C o C++. ¿Cómo comparar dos cadenas dadas char * punteros?
- 24. Permitir solo 3 instancias de una aplicación usando semáforos
- 25. Robots.txt, no permitir URL en varios idiomas
- 26. Permitir solo valores numéricos en el cuadro de texto
- 27. Permitir que solo ciertos dominios puedan cargar un iFrame
- 28. Permitir curl en php5
- 29. No permitir misiones y paso por valor
- 30. Robots.txt: No permitir subdirectorio pero permiten directorio