Pārlūkot izejas kodu

添加Mac地址检测,只适用于Ipv4

世龙 苏 7 gadi atpakaļ
vecāks
revīzija
c50d2b3cf9

+ 2 - 0
CommonLibrary/CommonLibrary.csproj

@@ -63,6 +63,8 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="IpAddressAttribute.cs" />
+    <Compile Include="MacAddress.cs" />
+    <Compile Include="MacAddressAttribute.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>

+ 17 - 0
CommonLibrary/MacAddress.cs

@@ -0,0 +1,17 @@
+namespace CommonLibrary
+{
+    public static class MacAddress
+    {
+        private const string Macpattern = @"^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$";
+
+        public static bool IsMacAddressValid(string macAddress)
+        {
+            return IsMacAddressValid(macAddress, Macpattern);
+        }
+
+        public static bool IsMacAddressValid(string macAddress, string pattern)
+        {
+            return !string.IsNullOrEmpty(macAddress) && System.Text.RegularExpressions.Regex.IsMatch(macAddress, pattern);
+        }
+    }
+}

+ 52 - 0
CommonLibrary/MacAddressAttribute.cs

@@ -0,0 +1,52 @@
+namespace CommonLibrary.MVC
+{
+    using System.Collections.Generic;
+    using System.ComponentModel.DataAnnotations;
+    using System.Web.Mvc;
+
+    public class MacAddressAttribute : RegularExpressionAttribute, IClientValidatable
+    {
+        private const string Macpattern = @"^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$";
+
+        public MacAddressAttribute()
+            : base(Macpattern)
+        {
+        }
+
+        public override bool IsValid(object value)
+        {
+            if (!base.IsValid(value))
+            {
+                return false;
+            }
+
+            string macValue = value as string;
+            if (MacAddress.IsMacAddressValid(macValue,Macpattern))
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        public override string FormatErrorMessage(string name)
+        {
+            return string.Format("'{0}'字段格式错误", name);
+        }
+
+        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
+        {
+            string fieldName = metadata.DisplayName;
+            string errorMessage = string.Format("'{0}'字段格式错误", fieldName);
+
+            ModelClientValidationRegexRule patternRule = new ModelClientValidationRegexRule(errorMessage, Macpattern);
+            yield return patternRule;
+
+            ModelClientValidationRule macRule = new ModelClientValidationRule();
+            macRule.ValidationType = "macformat";
+            macRule.ErrorMessage = string.Format("'{0}'字段值错误.", fieldName);
+
+            yield return macRule;
+        }
+    }
+}