Rya*_*ill 10 validation asp.net-mvc-3
我有一个Razor MVC3项目,它在表单中有两个用户记录,一个用于密钥联系,一个用于备份联系.例如;
public class User
{
    [Required(ErrorMessage = "First name is required")]
    public string FirstName { get; set; }
}
验证一切运作良好,除了在用户不填写字段中的小问题,它说:"首先名称是必需的",但我想指出的用户名字段之一是缺少哪个.例如"需要备份联系人名字"或"需要密钥联系人名字".
理想情况下,我希望将[Required]注释保留在类中,因为它在其他地方使用.
这似乎是可能错过并且不容易实现的那些小案例之一,但请证明我错了.
瑞安
Rob*_*vus 19
实现此目的的一种方法是使用此屏幕的单独视图模型,而不是包含所有错误消息的单个用户模型.在新的视图模型中,您可以拥有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
...
您的post控制器操作将从视图模型中收集属性(或将它们映射到单独的User模型)并将它们传递给适当的数据处理方法.
| 归档时间: | 
 | 
| 查看次数: | 31112 次 | 
| 最近记录: |