C# 如何使用ViewModel为razor MVC中的字段创建验证消息

C# 如何使用ViewModel为razor MVC中的字段创建验证消息,c#,asp.net-mvc-4,razor,requiredfieldvalidator,validationmessage,C#,Asp.net Mvc 4,Razor,Requiredfieldvalidator,Validationmessage,我想在razor视图中创建字段验证 这很容易,因为MVC会自动为我们生成验证消息 正如我所读到的,我们不允许在模型类中进行验证,而是使用viewModel类。现在我对如何在我的viewModel中放置[必需的]注释有点困惑。 我的问题 这就是真正的验证将如何工作 查看 这将起作用,但在我的视图模型中,结构不同,因为我需要使用许多表中的数据 我的ViewModel public class RegisterInfoPA { public register reg { ge

我想在razor视图中创建字段验证
这很容易,因为MVC会自动为我们生成验证消息

正如我所读到的,我们不允许在模型类中进行验证,而是使用viewModel类。现在我对如何在我的viewModel中放置[必需的]注释有点困惑。

我的问题

这就是真正的验证将如何工作
查看

这将起作用,但在我的视图模型中,结构不同,因为我需要使用许多表中的数据

我的ViewModel

    public class RegisterInfoPA
{    

    public register reg { get; set; }

    public personalInfo pinfo { get; set; }

    public IEnumerable<maritalInfo> minfo { get; set; }

    public IEnumerable<eduInfo> edInfo { get; set; }

    public IEnumerable<monthlyIncome> monthlyIncomeInfo { get; set; }

    public refundBank refundBK { get; set; }

    public IEnumerable<accType> accType { get; set; }  
}
公共类注册器INFOPA
{    
公共寄存器reg{get;set;}
公共personalInfo pinfo{get;set;}
公共IEnumerable minfo{get;set;}
公共IEnumerable edInfo{get;set;}
公共IEnumerable monthlyIncomeInfo{get;set;}
公共退款银行退款{get;set;}
公共IEnumerable accType{get;set;}
}
因此,每当我在此处分配[必需的]注释时,验证将不起作用。
如何为我的ViewModel执行验证消息,因为我的ViewModel正在使用

公共寄存器reg{get;set;}

它代表了这么多的字段,这是我想要的,但为了验证的目的,我只想验证一个或两个特定的字段。我如何才能做到这一点


谢谢。

假设
注册
这里还有一个
,为什么不将这两个字段移动到单独的
中,并在所需的类中继承它们?视图模型不应包含属于数据模型的属性。您需要为每个数据模型/集合创建视图模型-例如,
public registerViewModel reg{get;set;}
public IEnumerable minfo{get;set;}
等。如果您希望其他人轻松阅读您的代码,请遵循。准确地说,不要对属性使用LowerCamelCase。这完全是关于如何保持ViewModel。我建议您可以在Viewmodel中直接拥有registerNm的属性,并在将其发送到db时将其返回到reg。我将尝试您的每个建议,并很快返回,看看哪一个对我有效。假设
register
这里还有一个
,为什么不将这两个字段移动到单独的
类中
并在必需的类中继承它们呢?视图模型不应该包含作为数据模型的属性。您需要为每个数据模型/集合创建视图模型-例如,
public registerViewModel reg{get;set;}
public IEnumerable minfo{get;set;}
等。如果您希望其他人轻松阅读您的代码,请遵循。准确地说,不要对属性使用LowerCamelCase。这完全是关于如何保持ViewModel。我建议您可以在Viewmodel中直接拥有registerNm的属性,并在将其发送到db时将其返回到reg。我将尝试您的每个建议,并很快返回,看看哪一个适合我。
public class reg
{  
   [Required]
   public string registerNm {get;set;}
}
    public class RegisterInfoPA
{    

    public register reg { get; set; }

    public personalInfo pinfo { get; set; }

    public IEnumerable<maritalInfo> minfo { get; set; }

    public IEnumerable<eduInfo> edInfo { get; set; }

    public IEnumerable<monthlyIncome> monthlyIncomeInfo { get; set; }

    public refundBank refundBK { get; set; }

    public IEnumerable<accType> accType { get; set; }  
}