【发布时间】:2011-08-02 17:13:12
【问题描述】:
假设我有一个带有如下验证的用户类设置:
[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"]);
有没有办法做这样的事情,这样我就可以避免重复我的验证规则?谢谢!
【问题讨论】:
-
那么您是说要在 2 个表单上共享模型属性/属性?
-
如果可能,我只需要将更新表单作为创建表单的有限子集。例如,您不能更改用户名,但可以更改电子邮件地址。
标签: c# asp.net-mvc-2 validation model-binding