مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

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

  • دوشنبه 18 دی 1396
  • 14:40
تشکر میکنم

سلام 
فرض کنید 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>

کد در سمت سرور درسست کار میکند اما متاسفانه سمت کاربر کارنمیکند 
برای حل این مشکل باید چکار کنم 

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 18 دی 1396
  • 16:28

لطفا کد صفتی که نوشته اید را قرار بدید.

کاربر سایت

iran

عضویت از 1394/01/31

  • دوشنبه 18 دی 1396
  • 16:45
using System;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web.Mvc;


namespace WebApplication1.Helper
{
    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class CodeMelliAttribute : ValidationAttribute
    {
        public CodeMelliAttribute(string ErrorMessage)
            : base()
        {
            this.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 += Int32.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 == Int32.Parse(array[9].ToString(CultureInfo.InvariantCulture));
            }
            var temp = Math.Abs(diff - 11);
            return temp == Int32.Parse(array[9].ToString(CultureInfo.InvariantCulture));
        }
    }
}

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 19 دی 1396
  • 12:10

زمانی که شما از data annotation برای اعتبار سنجی استفاده می کنید ASP.NET MVC تنها میتوان صفت های خود و Regex را با فریم ورک  jQuery Validation ادقام کند و فیلد های شما را در سمت کاربر اعتبار سنجی کند. حال برای حال این مشکل باید خودتان آن را در سمت کاربر اعتبار سنجی کنید. مقاله زیر این کار رو انجام داده :

Creating Custom Validation Attribute in ASP.NET MVC Tutorial in Category ASP.NET MVC at EzzyLearning.com

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)