changeset 265:5ddc574deeea

Remplazamos la clase PersonaValidation por TwitterAttribute
author juanjose.montesdeocaarbos
date Tue, 25 Oct 2011 07:23:15 -0300
parents cef4fc893333
children dba5d41bc7bf
files Agendas/trunk/src/Agendas.Web/Models/PersonaModel.cs
diffstat 1 files changed, 30 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Web/Models/PersonaModel.cs	Sat Oct 22 17:27:45 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Models/PersonaModel.cs	Tue Oct 25 07:23:15 2011 -0300
@@ -18,14 +18,14 @@
         public string Nombre { get; set; }
 
         [Required]
-        [CustomValidation(typeof(PersonaValidation), "IsTwitterAccount")]
+        [Twitter]
         public string Twitter { get; set; }
 
         [Required]
-        [Email ]
+        [Email]
         public string EMail { get; set; }
 
-		[Url ]
+		[Url]
     	public string Blog { get; set; }
 
 		public string[] Roles { get; set; }
@@ -41,7 +41,7 @@
         public string Nombre { get; set; }
 
         [Required]
-        [CustomValidation(typeof(PersonaValidation), "IsTwitterAccount")]
+        [Twitter]
         public string Twitter { get; set; }
 
         [Required]
@@ -78,16 +78,34 @@
         public string Blog { get; set; }
     }
 
-    //TODO: Ver donde movemos esta clase.
-    public class PersonaValidation
+    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
+    public class TwitterAttribute: DataTypeAttribute
     {
-        public static ValidationResult IsTwitterAccount(string value)
+        public TwitterAttribute()
+            : base(DataType.Text)
+        {
+        }
+
+        public override string FormatErrorMessage(string name)
         {
-            //[RegularExpression(@"^([\w\d\-\.]+)$")]
-            return value.StartsWith("@")
-                       ? new ValidationResult("No debe ingresar el arroba al escribir la cuenta de twitter.")
-                       : ValidationResult.Success;
+
+            if (ErrorMessage == null && ErrorMessageResourceName == null)
+            {
+                //TODO: Esto debe estar en el archivo de Recursos.
+                const string TwitterAttribute_Invalid = "No debe ingresar el arroba al escribir la cuenta de twitter."; ;
+                ErrorMessage = TwitterAttribute_Invalid;
+            }
+            return base.FormatErrorMessage(name);
+        }
+
+        public override bool IsValid(object value)
+        {
+            if (value == null)
+            {
+                return false;
+            }
+
+            return !((string)value).StartsWith("@");
         }
     }
-
 }
\ No newline at end of file