"> بررسی نام کاربری تکراری به صورت Ajax در ASP.NET MVC

بررسی نام کاربری تکراری به صورت Ajax در ASP.NET MVC

نام کاربری تکراری

در این مقاله به بررسی آموزش چک کردن نام کاربری تکراری در دیتابیس در هنگام ثبت نام میپردازیم.آموزش در زبان سی شارپ و ASP.NET MVC خواهد بود.همراه من باشید.

نام کاربری تکراری در ASP.NET MVC

بسیاری از اوقات می خواهیم بررسی کنیم که آیا یک رکورد خاص در پایگاه داده وجود دارد یا خیر.

برای مثال، هنگام ثبت نام(Sign Up)، باید ببینیم کاربری با این ایمیل تا به حال ثبت نام کرده است؛ یا این نام کاربری از قبل توسط شخص دیگری انتخاب شده است.

روش های زیادی برای انجام این کار وجود دارد، اما استفاده از ویژگی “کنترل از راه دور”[۱] راهی بسیار آسان در ASP.NET MVC است.

در این مقاله سعی داریم گام به گام، نحوه بررسی لحظه ای وجود کاربرانی با مشخصات خاص، را با استفاده از ویژگی Remote در ASP.NET MVC یاد بگیریم.

اعتبار سنجی از راه دور در ASP.NET MVC چیست؟

Remote مشخصه ای برای اعتبارسنجی در Data Annotation است که در کلاس مدل[۲] برای اعتبارسنجی سریع رکوردها به کار میرود. در اینجا میخواهیم با ایجاد یک برنامه ساده ASP.NET MVC مفهوم فوق را نمایش دهیم.

گام اول: یک برنامه MVC ایجاد کنید.

در اینجا با رویکردی گام به گام یک برنامه ساده MVC ایجاد می کنیم:

  1. از منوstart از بخش all program برنامه Microsoft visual studio 2015 را انتخاب کنید.
  2. روی ” “File کلیک کرده و از قسمت “New” بخش “Project” را انتخاب کنید.
  3. “ASP.NET Web Application Template” را انتخاب نموده و یک نام دلخواه انتخاب کنید سپس دکمه “Ok”.

بعد از کلیک پنجره زیر نمایش داده میشود:

 رکورد تکراری به صورت Ajax

گام دوم: یک کلاس مدل[۳] ایجاد کنید.

یک کلاس مدل به نام Registermodel.cs ایجاد می کنیم.

برای این کار مطابق شکل زیر روی Model Folder راست کلیک میکنیم:

ASP.NET MVC

بعد از ایجاد کلاس، ویژگی های زیر را در کلاس RegisterModel.sc بنویسید.

RegisterModel.cs

using System.Collections.Generic;

using System.Linq;

using System.Web.Mvc;

using RemoteValiDationInMVC.Models;


namespace RemoteValiDationInMVC.Controllers

{

public class RegisterController : Controller

{

// GET: Register

[HttpGet]

public ActionResult SignUp()

{

return View();

}
[HttpPost]

public ActionResult SignUp(RegisterModel ObjModel )
{
if (ModelState.IsValid)
{
return View();
}
else
{
return View();
}
}
[HttpPost]
public JsonResult IsAlreadySigned(string UserEmailId)
{
return Json(IsUserAvailable(UserEmailId));
}
public bool IsUserAvailable(string EmailId)
{
// Assume these details coming from database

ListRegisterModelRegisterUsers = new ListRegisterModel()
{
new RegisterModel {UserEmailId="vithal.wadje@abc.com" ,PassWord="compilemode",Designation="SE"},

new RegisterModel {UserEmailId="Sudhir@abc.com" ,PassWord="abc123",Designation="Software Dev"}
};
var RegEmailId = (from u in RegisterUsers

where u.UserEmailId.ToUpper() == EmailId.ToUpper()

select new { EmailId }).FirstOrDefault();

bool status;

if (RegEmailId!=null)

{

//Already registered

status = false;

}

else

{

//Available to use

status = true;

}
return status;
}
}
}

در کد قبلی از ویژگیRemote  برای متد مربوط به UserEmaiId model class  (به همراه برخی ویژگی ها که در ادامه توضیح داده شده) استفاده کردیم.

نام کاربری تکراری

در تصویر بالا، برای کارکردن روی remote validation ، چند ویژگی از Remote attribute را تعریف کرده ایم:

  • IsAlreadySigned:

متد JsonResult که از پایگاه داده جزئیات را بررسی کرده و مقدار True یا False برمی گرداند.

  • Register

Register نام MVC Controller است که متد IsAlreadySigned JsonResult در داخل آن تعریف شده و از پایگاه داده جزئیات را بررسی می کند.

  • HttpMethod

این ویژگی از نوع HttpMethod  است که برای نامگذاری ویژگی های Remote ازجمله Get , Put , Postاستفاده می شود و تعریف آن اختیاری است.

  • ErrorMessage یا پیغام خطا

برای نمایش پیام در سمت گیرنده به کار میرود.

Remote attribute ، ویژگیهای اختیاری بسیاری دارد که هرکدام برای اعتبارسنجی خاصی استفاده می شود.

گام سوم: کلاس کنترلر را اضافه کنید.

در شکل زیر نحوه ی اضافه کردن کنترلر MVC نشان داده شده است.

 آموزش MVC

بعد از کلیک روی “add button” پنجره ای نمایش داده می شود. سپس نام کنترلر را، رجیستر کنید(با پسوند کنترلر ).

حالا کدهای پیش فرض در کلاس RegisterController.cs را تغییر داده و متد JsonResult  را ایجاد کنید.پس از انجام تغییرات، کدنهایی به صورت زیر خواهد بود:

RegisterController.cs

using System.Collections.Generic;

using System.Linq;

using System.Web.Mvc;

using RemoteValiDationInMVC.Models;


namespace RemoteValiDationInMVC.Controllers

{

public class RegisterController : Controller

{

// GET: Register

[HttpGet]

public ActionResult SignUp()

{

return View();

}
[HttpPost]

public ActionResult SignUp(RegisterModel ObjModel )
{
if (ModelState.IsValid)
{
return View();
}
else
{
return View();
}
}
[HttpPost]
public JsonResult IsAlreadySigned(string UserEmailId)
{
return Json(IsUserAvailable(UserEmailId));
}
public bool IsUserAvailable(string EmailId)
{
// Assume these details coming from database

ListRegisterModelRegisterUsers = new ListRegisterModel;()
{
new RegisterModel {UserEmailId="vithal.wadje@abc.com" ,PassWord="compilemode",Designation="SE"},

new RegisterModel {UserEmailId="Sudhir@abc.com" ,PassWord="abc123",Designation="Software Dev"}
};
var RegEmailId = (from u in RegisterUsers

where u.UserEmailId.ToUpper() == EmailId.ToUpper()

select new { EmailId }).FirstOrDefault();

bool status;

if (RegEmailId!=null)

{

//Already registered

status = false;

}

else

{

//Available to use

status = true;

}
return status;
}
}
}

نکته:

در کد بالا، IsAlreadySigned داده های JSON را در سمت گیرنده برمی گرداند و همچنین UserEmailId را به عنوان پارامتر ورودی میگیرد. تطابق نام پارامتر ورودی با ویژگیهایی که در remote attribute تعریف میشوند ،الزامی است.

گام چهارم: یک View ایجاد کنید.

حالا یک StronglyTyped  با نام Signup از کلاس RegisterModel ایجاد می کنیم.

 عدم ثبت رکورد تکراری

روی دکمه Add button کلیک کنید. یک View با عنوان Signup ایجاد می شود.

حالا SignUp.cshtml را باز کنید. کدهای پیشفرض که توسط الگوی MVC تولید شده را خواهید دید.

حالا کدها را براساس نیازتان تغییر دهید:

SignUp.cshtml

@model RemoteValiDationInMVC.Models.RegisterModel


@{

ViewBag.Title = "SignUp";

}

@using (Html.BeginForm())

{

@Html.AntiForgeryToken()

div class="form-horizontal"

hr /

@Html.ValidationSummary(true, "", new { @class = "text-danger" })

div class="form-group"

@Html.LabelFor(model = model.UserEmailId, htmlAttributes: new { @class = "control-label col-md-2" })

div class="col-md-10"

@Html.EditorFor(model = model.UserEmailId, new { htmlAttributes = new { @class = "form-control" } })

@Html.ValidationMessageFor(model = model.UserEmailId, "", new { @class = "text-danger" })

/div

/div

div class="form-group"

@Html.LabelFor(model = model.Designation, htmlAttributes: new { @class = "control-label col-md-2" })

div class="col-md-10"

@Html.EditorFor(model = model.Designation, new { htmlAttributes = new { @class = "form-control" } })

@Html.ValidationMessageFor(model = model.Designation, "", new { @class = "text-danger" })

/div

/div

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"

div class="col-md-offset-2 col-md-10"

input type="submit" value="SignUp" class="btn btn-primary" /

/div

/div

/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

بعد از اضافه کردن مدل، View  و Controller  را به پروژه اضافه کنید. حالا پنجره Solution Explorer به صورت زیر ظاهر می شود:

نام کاربری تکراری

گام پنجم:

اکنون، برنامه را اجرا کرده و از لیستی که قبلا در کلاس RegisterController تعریف کرده بودیم یک emaild id تایپ کنید.

 چک کردن نام کاربری تکراری

حالا، بدون ارسال فرم و بسیار سریع، پیامی ظاهر می شود که این ID از قبل، در پایگاه داده موجود است. این روش از اتلاف وقت کاربر جلوگیری می کند.

نکته:

چون این برنامه یک نسخه نمایشی است، پس استاندارد مناسبی برای استفاده نیست. پس با استفاده از مهارت خود ان را بهبود ببخشید.

 

  1. ۱. Remote
  2. ۲. Model
  3. ۱. model class
  • پسورد: www.mspsoft.com
محمد دهقانی

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    ایران پاسخ

    واقعا واقعا سپاسگزارم عاللللی بود
    آموزش نحوه خطا هنگام درج کدملی در سی شارپ دارید؟
    برنامه من ویندوز فرم و با ویژال استودیو 2015 در حال انجام است

    ممنونم

      مسعود شریفی پور پاسخ

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

    rahmat پاسخ

    سلام
    قشنگتر این بود که از دیتابیس میخوند
    چرا از دیتا بیس نمیخونه؟
    اینطوری که قابل استفاده نیست