C# 根据模型验证ASP.NET MVC2 FormCollection

C# 根据模型验证ASP.NET MVC2 FormCollection,c#,asp.net-mvc-2,validation,model-binding,C#,Asp.net Mvc 2,Validation,Model Binding,假设我有一个用户类设置,具有如下验证: [MetadataType(typeof(ssUserMetaData))] public partial class ssUser { } class ssUserMetaData { [Required(ErrorMessage = "Name is a required field.")] [StringLength(100, ErrorMessage = "Name must be 100 characters or less.

假设我有一个用户类设置,具有如下验证:

[MetadataType(typeof(ssUserMetaData))]
public partial class ssUser
{

}

class ssUserMetaData
{
    [Required(ErrorMessage = "Name is a required field.")]
    [StringLength(100, ErrorMessage = "Name must be 100 characters or less.")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Username is a required field.")]
    [StringLength(50, ErrorMessage = "Username must be 50 characters or less.")]
    public string Username { get; set; }

    [Required(ErrorMessage = "Email address is a required field.")]
    [Email(ErrorMessage = "Email address must be a valid format.")]
    [StringLength(100, ErrorMessage = "Email address must be 100 characters or less.")]
    [DisplayName("Email address")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Password is a required field.")]
    [StringLength(1000, MinimumLength = 6, ErrorMessage = "Passwords must be at least 6 characters long.")]
    [DisplayName("Password")]
    public string PasswordHash { get; set; }
}
现在,我有了一个更新方法,只允许用户更新几个字段,比如姓名和电子邮件。我不想重新提交此表单的所有数据以通过模型绑定,但我想使用此处配置的验证规则来检查表单集合中的特定值

类似于这个虚构的代码

bool result = ModelState.ValidateField("Email", formCollection["Email"]);

有没有一种方法可以这样做,这样我就可以避免重复我的验证规则?谢谢

让小表单使用NameAndEmail类,让大表单使用SsUserMetaData怎么样

class NameAndEmail
{
    [Required(ErrorMessage = "Name is a required field.")]
    [StringLength(100, ErrorMessage = "Name must be 100 characters or less.")]
    public string Name { get; set; }


    [Required(ErrorMessage = "Email address is a required field.")]
    [Email(ErrorMessage = "Email address must be a valid format.")]
    [StringLength(100, ErrorMessage = "Email address must be 100 characters or less.")]
    [DisplayName("Email address")]
    public string Email { get; set; }
}
class SsUserMetaData : NameAndEmail
{
    [Required(ErrorMessage = "Username is a required field.")]
    [StringLength(50, ErrorMessage = "Username must be 50 characters or less.")]
    public string Username { get; set; }


    [Required(ErrorMessage = "Password is a required field.")]
    [StringLength(1000, MinimumLength = 6, ErrorMessage = "Passwords must be at least 6 characters long.")]
    [DisplayName("Password")]
    public string PasswordHash { get; set; }
}

那么你是说你想在两个表单上共享模型属性/属性吗?如果可能的话,我只需要更新表单是创建表单的有限子集。例如,不允许您更改用户名,但允许您更改电子邮件地址。在这种情况下,我是否会使用
public ActionResult Update(nameandmail user)
?并且您的视图(或部分视图)也可以输入到其中。很酷,我认为这是可行的。我将我的模型作为
ssUser
保存在视图中,并确保首先运行
TryUpdateModel
,使其具有正确的值。非常感谢。