View Full Version : سوال: چک کردن  مقدار یک  text box در mvc
  
Iran58
دوشنبه 09 اسفند 1395, 15:27 عصر
سلام
یک textbox داخل برنامه mnvداریم که داخل آن کدملی را وارد میکنیم و یک تابع هم داریم حال چگونه می توانم چک کنم ببینیم عدد وارد شده کدملی صحیح است یا نه و مانند validationها error مرتبط را برگرداند 
باتشکر
Moien Tajik
دوشنبه 09 اسفند 1395, 21:38 عصر
از این Class میتونید استفاده کنید که شامل Extension Method های کاربردی هست که کدملی هم یکی از اون هاست .
برای چک کردن بدون ارسال فرم هم میتونید از Remote Attribute استفاده کنید .
Iran58
سه شنبه 08 فروردین 1396, 11:49 صبح
از این Class میتونید استفاده کنید که شامل Extension Method های کاربردی هست که کدملی هم یکی از اون هاست .
برای چک کردن بدون ارسال فرم هم میتونید از Remote Attribute استفاده کنید .
باسلام
از IsNationalCode که در کلاس است چگونه می توانم در برنامه استفاده کنم
Moien Tajik
سه شنبه 08 فروردین 1396, 14:21 عصر
میتونید از این Attribute استفاده کنید :
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
    public class NationalCodeAttribute : ValidationAttribute
    {
        #region IsValidNationalCode بررسی صحت کدملی
 
        public NationalCodeAttribute(string errorMessage)
        {
            ErrorMessage = errorMessage;
        }
 
        public override bool IsValid(object value)
        {
            if (value == null) return false;
            if (IsValidNationalCode(value.ToString()) == false) return false;
            return true;
        }
 
        public bool IsValidNationalCode(string nationalcode)
        {
            if (string.IsNullOrEmpty(nationalcode)) return false;
            if (!new Regex(@"\d{10}").IsMatch(nationalcode)) return false;
 
            var array = nationalcode.ToCharArray();
 
            var allDigitEqual = new[] { "0000000000", "1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999" };
            if (allDigitEqual.Contains(nationalcode)) return false;
            var j = 10;
            var sum = 0;
            for (var i = 0; i < array.Length - 1; i++)
            {
                sum += int.Parse(array[i].ToString(CultureInfo.InvariantCulture)) * j;
                j--;
            }
            var div = sum / 11;
            var r = div * 11;
            var diff = Math.Abs(sum - r);
            if (diff <= 2)
            {
                return diff == int.Parse(array[9].ToString(CultureInfo.InvariantCulture));
            }
            var temp = Math.Abs(diff - 11);
            return temp == int.Parse(array[9].ToString(CultureInfo.InvariantCulture));
        }
        #endregion
    }
Iran58
دوشنبه 14 فروردین 1396, 17:34 عصر
سلام و باتشکر از جوابتان
من می خواهم متن خطا از ErrorMassage.resx که داخل App_GlobalResources تعریف کرده ام خوانده شود مانند
 [Required(ErrorMessageResourceType = typeof(Resources.ErrorMassage),
            ErrorMessageResourceName = "RequiredError")]
        public string UserName { get; set; }
اما نمی دانم  این دستور را چگونه تغییر بدهم
 public NationalCodeAttribute(string errorMessage)
        {
            ErrorMessage = errorMessage;
        }
باتشکر
Moien Tajik
سه شنبه 15 فروردین 1396, 23:36 عصر
به این شکل باید ازش استفاده کنید :
[Required(ErrorMessage = "وارد کردن {0} الزامی است !")]
       [Display(Name = "کدملی ( نام کاربری )")]
       [NationalCode("کدملی وارد شده معتبر نمیباشد !")]
       public string Username { get; set; }
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.