Làm thế nào để sử dụng các attributes

Tất cả các thuộc tính được viết ngay trước property/class/function với số 0 hoặc nhiều tham số bắt buộc theo sau bởi một danh sách các thông số được đặt tên tùy chọn. Các thuộc tính StringLength, ví dụ, có một tham số bắt buộc: MaximumLength

public string MembershipCode { get; set; }… Nhưng cũng có thể đính kèm các thông số như tên MinimumLength và ErrorMessage. Khi sử dụng Visual Studio bạn đang được cung cấp một danh sách của tất cả các thông số được đặt tên có sẵn.

Bạn đang xem: Modelstate.isvalid là gì

public string UserName { get; set; }public string CountryCode { get; set; }

Làm thế nào MVC sử dụng để validate biến đến (incoming variable)

Các đối tượng ModelState chứa thông tin về tất cả các thông số đầu vào. Trong ví dụ dưới đây biến đến là các đối tượng Customer. Nếu các đối tượng Customer xác định rằng CountryCode là Required nhưng không có CountryCode được liệt kê trong số các biến đến, ModelState sẽ đánh dấu một sự thất bại xác nhận và người dùng sẽ được chuyển hướng trở lại trang với một thông báo lỗi. Xác nhận điều này được thực hiện tự động cho bạn và cho thấy một ví dụ về cách hữu các thuộc tính có thể được.

Xem thêm: Lượng Từ Là Gì – Soạn Bài Số Từ Và Lượng Từ

public ActionResult Edit(Customer customer){ if (ModelState.IsValid) { // Save customer return RedirectToAction(“Index”); } else { return View(); }}

Ràng buộc dữ liệu đối với các attributes

Ở đây sau một danh sách các validation phổ biến nhất các thuộc tính có sẵn khi xây dựng một mô hình code-first.** Compare**So sánh giá trị của một property đối với property khác. Các property Compare tồn tại trong cả System.Web.Mvc và System.Component.DataAnnotationsVí dụ dưới đây làm cho chắc chắn rằng các đặc tính Email và EmailVerify đều giống nhau.

Xem thêm: Fee Waiver Là Gì – Những Câu Hỏi Thường Gặp Khi Du Học

public class RegisterEmailAddressViewModel{ public int UserId { get; set; } public string Email { get; set; } public string EmailVerify { get; set; }}Xin lưu ý rằng ví dụ trên không có ý định cho việc lưu trữ cơ sở dữ liệu. Nếu bạn sử dụng thuộc tính so sánh trong một lớp mô hình cơ sở dữ liệu có thể bạn cũng có thể thuộc tính vì bạn ko muốn lưu email 2 lần

CreditCard

public class Transaction{ public int TransactionId { get; set; } public decimal Amount { get; set; } public string CreditCardNumber { get; set; }}**CustomValidation **Khi bạn muốn viết validation của riêng bạn. Đơn giản chỉ cần tạo ra một lớp thực hiện các lớp ValidationAttribute. Thêm một chức năng public static mà chấp nhận một giá trị được so sánh và trả về một thể hiện của ValidationResult.

public class OldEnoughValidationAttribute : ValidationAttribute{ public static ValidationResult IsOldEnough(int givenAge) { if (givenAge >= 20) return ValidationResult.Success; else return new ValidationResult(“You”re not old enough”); }}Sử dụng nó như sau

public class Customer{ public int Age { get; set;}Một cách khác để tạo và sử dụng các custom validation, thay vì tạo ra các public static , để ghi đè lên các chức năng IsValid hiện trong lớp ValidationAttribute. Override chức năng IsValid

public class OldEnoughValidationAttribute : ValidationAttribute{ public int LimitAge { get; set; } public OldEnoughValidationAttribute(int limitAge) { LimitAge = limitAge; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { int val = (int)value; if (val >= LimitAge) return ValidationResult.Success; else return new ValidationResult(ErrorMessageString); }}**Dùng nó như sau **

public class Customer{ public int Age { get; set;}

Kiểu dữ liệu (DataType)

Cho phép bạn chỉ định một kiểu dữ liệu mà cụ thể hơn các chỉ định trong database.Điều này có thể được sử dụng để cung cấp validation chính xác hơn và hiển thị thích hợp cho người sử dụng. Kiểu dữ liệu hợp lệ là:

CreditCardCurrencyCustomDate – date valueDateTime – date and time valueDurationEmailAddressHtml – specify that Html code is expectedImageUrl – url to an imageMultilineText – uses textarea instead of text as input type in forms.PasswordPhoneNumberPostalCodeTextTimeUpload – a file upload data typeUrl

** Sử dụng như sau **

public class Customer{ public string Email { get; set; }}Display

Trưng bày text label cho properties

public class Customer{ public bool EmailIsConfirmed { get; set; }}DisplayFormat

Chỉ định format dữ liệu

public class Post{ public DateTime PostedDate { get; set; } // Display as currency public object WritingCost; // Store NULL as NULL but show as empty string public string ExtraDescription { get; set; }}EmailAddress

Format địa chỉ email

public class Customer{ public string EmailAddress { get; set; }}EnumDataType

Dùng để map một giá trị với một chuỗi có nghĩa (key-value)

public class Line{ public object LineColor { get; set; }}public enum IntColor{ Red = 1, Blue = 2, Green = 3, Yellow = 4}FileExtensions

Chỉ định extension cho một file

public class Person{ public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Avatar { get; set; }}Nếu png sẽ có lỗi như sau :

*

MembershipPassword

public class Customer{ public string UserName { get; set; } public string Password { get; set; }}Phone

public class CustomerPhone{ public int Id { get; set; } public string PhoneNumber { get; set; }}Range

Chuyên mục: Hỏi Đáp