2011-04-12 73 views
0

我有一类用户,即有一个电子邮件属性,像:排除从unobstrusive客户端验证属性与MVC 3

public class User : Entity 
{  
... 
    [Display(Name = "Email"), Required(ErrorMessage = "Required."), Remote("EmailExists", "User", ErrorMessage = "Email already in Use.")] 
    public virtual string Email { get; set; } 
... 
} 

我的视图中创建精品工程的所有验证... 但在我的观点编辑,我的电子邮件texbox是只读,因此用户不能更改电子邮件......

问题是我的远程验证EmailExists保持射击......

有没有一种方法可以在这种情况下排除电子邮件客户端验证?或者也许另一种解决方案

感谢

回答

1

最好的解决办法是使电子邮件作为在特定情况下,文本内容(跨度,P等) - 验证就不会开火。这最好用编辑器模板来完成。但是,如果你不希望,你可以使用一些JavaScript来删除客户端的规则。看看Plugins/Validation/rules - 当文本框是只读的,你会删除规则。但对我来说,第一种方式是最好的选择

1

我认为,更简单的方法是在客户端禁用该领域而不是使用只读的。验证插件不考虑禁用的字段。

+0

问题是残疾人领域发NULL值到我的控制器更新方法... – Paul 2011-04-12 14:39:36

+0

表单域很容易被篡改,因此,如果字段必须是只读的,你只需要采取帐户控制器,更新电子邮件只有这是一个新用户。 – Jokin 2011-04-13 13:05:28

0

你可以使用不同的ViewModels的编辑和创建视图和只适用于远程属性来查看与创建视图关联的模型或调用一些其他远程验证逻辑与编辑视图相关联的视图模型。