آموزش صفت Compare در MVC
سه شنبه 7 مهر 1394در این مقاله قصد داریم به توضیحی درباره مقایسه دو فیلد و هچنین طریقه استفاده از صفت 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;
قرار دارد و همچنین ورودی اول این صفت نام متغیری است که با این فیلد مقایسه میشود.
- ASP.net MVC
- 1k بازدید
- 2 تشکر