نمایش نتایج 1 تا 4 از 4

نام تاپیک: چک کردن customAttribute در سمت کاربر

  1. #1

    چک کردن customAttribute در سمت کاربر

    سلام
    فرض کنید custom attribute به اسم CodeMelli ایجاد کرده ام و بصورت زیر بکاربرده ایم

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    using WebApplication1.Helper;


    namespace WebApplication1.Models
    {
    public class Person
    {
    [Required]
    public string Name { get; set; }
    [CodeMelli("test")]
    public string code { get; set; }
    }
    }

    و در صفحه view کد زیر را نوشته ایم

    @model WebApplication1.Models.Person


    @{
    Layout = null;
    }


    <!DOCTYPE html>


    <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title>View</title>
    </head>
    <body>
    <div>
    @using (Html.BeginForm("About", "Home", FormMethod.Post))
    {
    <p>
    @Html.LabelFor(m => m.Name)
    @Html.TextBoxFor(m => m.Name)
    @Html.ValidationMessageFor(m => m.Name)
    </p>
    <p>
    @Html.LabelFor(m => m.code)
    @Html.TextBoxFor(m => m.code)
    @Html.ValidationMessageFor(m => m.code)
    </p>
    <input type="submit" value="ثبت نام" />
    }
    </div>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    </body>
    </html>
    کد در سمت سرور درسست کار میکند اما متاسفانه سمت کاربر کارنمیکند
    برای حل این مشکل باید چکار کنم



  2. #2

    نقل قول: چک کردن customAttribute در سمت کاربر

    وقتی jquery unobtrusive فعال باشه ، Validation سمت کاربر ابتدا اجرا میشه.

    بعنوان مثال برای همون کد ملی که خودتون نوشتید ، 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
    }


    نحوه استفاده ازش هم :

    [Required(ErrorMessage = "وارد کردن {0} الزامی است !")]
    [Display(Name = "کدملی")]
    [NationalCode("کدملی وارد شده معتبر نمیباشد !")]
    public string NationalCode { get; set; }



    و در ویو :

    @Html.TextBoxFor(m => m.Username, new { @class = "form-control", placeholder = "کد ملی ( نام کاربری )" })
    @Html.ValidationMessageFor(model => model.Username, "", new { @class = "text-danger" })


    @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    }


    اگر باز هم به نتیجه نرسیدین باید اینترفیس IClientValidatable رو پیاده سازی کنید :
    https://stackoverflow.com/a/4747466
    http://www.c-sharpcorner.com/UploadF...annotations-w/
    https://forums.asp.net/t/1639666.asp...tion+attribute

  3. #3

    نقل قول: چک کردن customAttribute در سمت کاربر

    نقل قول نوشته شده توسط Moien Tajik مشاهده تاپیک
    وقتی jquery unobtrusive فعال باشه ، Validation سمت کاربر ابتدا اجرا میشه.

    بعنوان مثال برای همون کد ملی که خودتون نوشتید ، 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
    }


    نحوه استفاده ازش هم :

    [Required(ErrorMessage = "وارد کردن {0} الزامی است !")]
    [Display(Name = "کدملی")]
    [NationalCode("کدملی وارد شده معتبر نمیباشد !")]
    public string NationalCode { get; set; }



    و در ویو :

    @Html.TextBoxFor(m => m.Username, new { @class = "form-control", placeholder = "کد ملی ( نام کاربری )" })
    @Html.ValidationMessageFor(model => model.Username, "", new { @class = "text-danger" })


    @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    }


    اگر باز هم به نتیجه نرسیدین باید اینترفیس IClientValidatable رو پیاده سازی کنید :
    https://stackoverflow.com/a/4747466
    http://www.c-sharpcorner.com/UploadF...annotations-w/
    https://forums.asp.net/t/1639666.asp...tion+attribute
    سلام
    متاسفانه سمت کلاینت کارنکرد

  4. #4

    نقل قول: چک کردن customAttribute در سمت کاربر

    نقل قول نوشته شده توسط Iran58 مشاهده تاپیک
    سلام
    متاسفانه سمت کلاینت کارنکرد
    این مشکل چطور حل میشود؟ من هم دقیقا این مشکل رودارم

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: سه شنبه 26 بهمن 1389, 14:33 عصر
  2. چک کردن فایلهای در حال کپی
    نوشته شده توسط Bahmany در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: چهارشنبه 10 بهمن 1386, 17:28 عصر
  3. visable کردن پنل در سمت کلاینت
    نوشته شده توسط shahab_ksh در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 02 مرداد 1386, 23:45 عصر
  4. Login کردن با چک کردن ConnectionString در Web.config
    نوشته شده توسط federrer در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: دوشنبه 25 تیر 1386, 22:57 عصر
  5. ریشه کن کردن سارس: چک کردن مسیرها در کامپایلرهای مختلف ++C
    نوشته شده توسط Anti_Evil در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: یک شنبه 26 بهمن 1382, 14:28 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •