我有一个 Razor MVC3 项目,其中表单中有两条用户记录,一条用于关键联系人,一条用于备份联系人。例如;
public class User
{
[Required(ErrorMessage = "First name is required")]
public string FirstName { get; set; }
}
验证一切正常,除了用户无法填写字段的小问题,它说“需要名字”,但我想向用户指出缺少其中一个名字字段。例如“需要备用联系人的名字”或“需要主要联系人的名字”。
理想情况下,我想在类上保留 [Required] 注释,因为它在其他地方使用。
这似乎是那些可能被遗漏的小案例之一,并且不容易实现,但请证明我错了。
Ryan
实现此目的的一种方法是为此屏幕使用单独的视图模型,而不是包含所有错误消息的单个用户模型。在新的视图模型中,您可以拥有 BackupContactFirstName 属性、KeyContactFirstName 属性等,每个属性都有其单独的错误消息。 (或者,此视图模型可以包含单独的用户模型作为属性,但我发现 Microsoft 的客户端验证不能很好地处理复杂模型,并且更喜欢平面属性)。
您的视图模型将如下所示:
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
...
您的后控制器操作将从视图模型收集属性(或将它们映射到单独的用户模型)并将它们传递给适当的数据处理方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)