簡體   English   中英

在ASP.NET MVC中繞過必填屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM