[英]Bypass required attribute in ASP.NET MVC
在課堂上我有這個:
public class CustomerMvc
{
public int Id { get; set; }
[Required(ErrorMessage = "LastName mandatory.")]
public string LastName { get; set; }
[EmailValidation(ErrorMessage = "Email not valid.")]
public string Email { get; set; }
}
在另一堂課中,我有這個:
public class CartMvc
{
public CustomerMvc Customer { get; set; }
[Required(ErrorMessage = "VAT mandatory.")]
public int VatId { get; set; }
}
控制器中的Save
方法將收到模型類型CartMvc
。 問題是,在這種情況下,我不想驗證屬性類型CustomerMvc
而只能驗證VatId
。
在這種情況下,有沒有辦法繞過CustomerMvc
上的驗證? 另一種方式 ?
謝謝,
您可以使用視圖模型:
public class SaveCustomerMvcViewModel
{
public int Id { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
接着:
public class SaveCartMvcViewModel
{
public SaveCustomerMvcViewModel Customer { get; set; }
[Required(ErrorMessage = "VAT mandatory.")]
public int VatId { get; set; }
}
當然,現在,您的Save controller動作將采用適當的視圖模型作為參數:
[HttpPost]
public ActionResult Save(SaveCartMvcViewModel model)
{
...
}
另外,將[Required]
屬性放在不可空的整數屬性(您的VatId
屬性)上幾乎沒有任何意義,因為不可空的整數將始終具有值。 如果要驗證用戶是否實際輸入了某些值,則最好在視圖模型中使用可為空的整數:
public class SaveCartMvcViewModel
{
public SaveCustomerMvcViewModel Customer { get; set; }
[Required(ErrorMessage = "VAT mandatory.")]
public int? VatId { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.