آموزش صفت Compare در MVC

سه شنبه 7 مهر 1394

در این مقاله قصد داریم به توضیحی درباره مقایسه دو فیلد و هچنین طریقه استفاده از صفت Compare در MVC بپردازیم در یک پروژه واقعی گاهی اوقات نیاز است که دو فیلد حتما از نظر یکسان بودن بررسی شود برای مثال هنگام ثبت نام کاربر یک فیلد به نام کلمه عبور و یک فیلد دیگر به نام تکرار کلمه عبور میگریم.

آموزش صفت  Compare در MVC

در این مقاله میخواهیم بررسی کنیم که چه طور میتوان در MVC  دو فیلد را از نظر مقدار با هم بررسی کرد.

برای شروع  ویژوال استادیو را باز کرده و یک پروژه از نوع MVC>Empty  ایجاد میکنیم

سپس مانند زیر در روی Models>Add>Class  راست کلیک کرده و یک کلاس  به نام Calculate ایجاد میکنیم

 

حال دو متغیر در کلاس Calcuate تعریف میکنیم.


 
 public class Calculate
    {
        public string Password { get; set; }

        public string repassword { get; set; }
    }

 حال روی  کنترلر راست کلیک کرده و یک کنترلر از نوع MVC 5 Controller - Empty به نام employee ایجاد میکنیم 

 

حال یک متد به نام Create هم از نوع Get و هم از نوع Post  ایجاد میکنیم در متد post یک پارامتر از کلاس calcute برای فرستادن مقادیر به سمت سرور ایجاد میکنم.

[HttpGet]
        public ActionResult Create()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Create(Calculate c)
        {
           

حال روی متد create راست کلیک کرده و یک view از جنس create و نوع کلاس calcue ایجاد میکنیم

کدهای مربوط به view ، Create را در زیر آورده شده است.

@model Compare_Demo.Models.Calculate

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>Calculate</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.repassword, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.repassword, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.repassword, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

 

حال از برنامه اجرا بگیرید.

حال همانطور که مشاهده کردید اگر در تکرار کلمه عبور کارکتر وارد شده با هم برابر نباشد هیچ پیغامی و بدون هیچ مشکلی ثبت میکند که در واقع در برنامه واقعی این یک مشکل به حساب می آید.

حال برای جلو گیری از ثبت اطلاعات نادرست در کلاس Calculate رفته و در متغیری که میخواهیم با متغیر دیگر مقایسه شود از صفت Compare استفاده میکنیم.

  public class Calculate
    {
        public string Password { get; set; }
        [Compare("Password",ErrorMessage = "کلمات عبور با هم مغایرت دارند ")]
        public string repassword { get; set; }
    

لازم بذکر است که صفت compare در فضای نام using System.ComponentModel.DataAnnotations;

قرار دارد و همچنین ورودی اول این صفت نام متغیری است که با این فیلد مقایسه میشود. 

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید