01/10/2018, 17:32

Remote validation trong asp.net mvc

ASP.Net MVC 3 hỗ trợ chúng ta một tính năng khá hay đó là remote validation. Remote validation cho phép chúng ta gọi về server làm một số việc gì đó như là: kiểm tra sự tồn tại của email, username có trong database hay không, ngày tháng có hợp lệ hay không… Dĩ nhiên những cuộc gọi về ...

ASP.Net MVC 3 hỗ trợ chúng ta một tính năng khá hay đó là remote validation.

Remote validation cho phép chúng ta gọi về server làm một số việc gì đó như là: kiểm tra sự tồn tại của email, username có trong database hay không, ngày tháng có hợp lệ hay không… Dĩ nhiên những cuộc gọi về server này giống như AJAX chứ không phải là post toàn bộ page về server

Chúng ta tiến hành thí nghiệm tính năng bằng cách viết một chức năng kiểm tra user name của người đăng ký vào website đã tồn tại chưa.

Nào! Bây giờ chúng ta mở visual studio lên và tạo project có tên là RemoteValidation như hình sau:

1. Tạo và xử lý cho model
Sau khi tạo project RemoteValidation xong, chúng ta tiến hành tạo model RegisterUserModel.

Model của chúng ta chỉ có vài property như FullName, UserName và Password như sau:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace RemoteValidation.Models
{
    public class RegisterUserModel
    {
        public string FullName { get; set; }

        [Required]
        [Remote("CheckUserName", "Account", "Tên đăng nhập đã tồn tại")]
        public string UserName { get; set; }

        [Required]
        public string Password { get; set; }

    }
}

2. Viết mã xử lý cho controller
Ok! Thế là chúng ta đã xong phần của model, bây giờ chúng ta viết code cho Account controller. Chúng ta mở file AccountController.cs trong thư mục Controller để thêm vào action CheckUserName như sau:

        [AllowAnonymous]
        public ActionResult TestRemoteValidation() {
            return View();
        }

        [AllowAnonymous]
        [HttpGet]
        public JsonResult CheckUserName(string userName)
        {
            return Json(!userName.Equals("gockinhnghiem"), JsonRequestBehavior.AllowGet);
        }

Chúng ta sẽ cần xử lý phức tạp hơn như là xuống databae lục lội xem username có tồn tại hay không. Tuy nhiên, để demo chúng ta chỉ cần kiểm tra nó có trùng với chuỗi gockinhnghiem hay không.

Action thứ nhất có tên là TestRemoteValidation dùng để load view TestRemoteValidation mà chúng ta sẽ tạo sau

Action thứ 2 có tên CheckUserName trả về kiểu Json giá trị true hay false. Trả về false nếu người dùng nhập vào chuỗi gốc kinh nghiệm, còn ngược lại thì trả về true. Giá trị trả về là false thì có nghĩa là có lỗi xảy ra

3. Tạo view để test tính năng
Chúng ta right click lên thư mục Views/Account tạo view có tên là TestRemoteValidation như hình bên dưới:

Chúng ta thêm đoạn mã sau vào TestRemoteValidation view:

@model RemoteValidation.Models.RegisterUserModel

@{
    ViewBag.Title = "TestRemoteValidation";
}

<h2>Test Remote Validation</h2>
@using (Html.BeginForm())
{ 
    @Html.EditorForModel();
    <input type="submit" value="Submit" />
}

4. Test
Kết quả của đoạn chương trình của chúng ta sẽ như hình sau:


0