Asp.net-Mvc-3

如何在 MVC3 中向同一對象的實例顯示不同的必需消息?

  • July 4, 2017

我有一個 Razor MVC3 項目,它在一個表單中有兩個使用者記錄,一個用於關鍵聯繫人,一個用於備份聯繫人。例如;

public class User
{
   [Required(ErrorMessage = "First name is required")]
   public string FirstName { get; set; }
}

驗證一切正常,除了使用者未能填寫欄位的小問題,它說“需要名字”,但我想指出使用者缺少哪個名字欄位。例如“需要備份聯繫人名字”或“需要關鍵聯繫人名字”。

理想情況下,我想離開

$$ Required $$類上的註釋,因為它在其他地方使用。 這似乎是那些可能被遺漏且不容易實現的小案例之一,但請證明我錯了。

瑞安

實現此目的的一種方法是為此螢幕使用單獨的視圖模型,而不是使用包含所有錯誤消息的單個使用者模型。在新的視圖模型中,您可以有一個 BackupContactFirstName 屬性、KeyContactFirstName 屬性等,每個屬性都有其單獨的錯誤消息。(或者,這個視圖模型可以包含單獨的使用者模型作為屬性,但我發現微軟的客戶端驗證不能很好地處理複雜的模型,並且更喜歡平面屬性)。

您的視圖模型將如下所示:

public class MySpecialScreenViewModel
{
   [Required(ErrorMessage = "Backup contact first name is required")]
   public string BackupContactFirstName { get; set; }


   [Required(ErrorMessage = "Key contact first name is required")]
   public string KeyContactFirstName { get; set; }
}

然後將您的視圖模型傳遞給視圖,如下所示:

@model MySpecialScreenViewModel
...

您的後控制器操作將從視圖模型中收集屬性(或將它們映射到單獨的使用者模型)並將它們傳遞給適當的數據處理方法。

引用自:https://stackoverflow.com/questions/5859658