2010-08-12 57 views
1

此问题标题可能措辞不佳,因此可以随意调整。在jQuery上验证电子邮件回复最佳做法

在我的MVC应用程序中,我有一个自定义属性,用于装饰电子邮件字段,然后通过或失败模型。

在一个pge上,虽然我允许使用提交评论,但我通过ajax提交,所以不要做一个完整的回发和没有模型验证。

所以我想验证地址但不复制代码。我还想避免将代码从验证程序中划分为另一个类,或者这是最好的方式?

还有别的办法吗?我可以在ajax回发中创建模型并在那里验证它,然后返回带有错误消息的部分视图?

或者还有另外一种方法吗?

回答

0

你说,...

所以我想验证地址,但不能复制的代码。我还想避免将代码从验证程序中划分为另一个类,或者这是最好的方法吗?

IMO,这是最好的方法。分解通用代码。我看到你的问题,但我们的EmailValidator继承自RegularExpressionValidator,所以很难分解出来。我们有一个使用相同RegEx模式的RegEx实用程序类。我们指的是通过模式不断在这两个地方...

public class EmailAttribute : RegularExpressionAttribute 
{ 
    public EmailAttribute() : 
    base(RegExUtility.SingleEmailAddressPattern) 
    { 
    ErrorMessage = "Please enter a valid email address"; 
    } 

public static class RegExUtility 
{ 
    public const SingleEmailAddressPattern = @"..."; 

    public static bool IsValidSingleEmailAddress(string email) 
    { 
    return Regex.IsMatch(email, SingleEmailAddressPattern); 

对于简单的Ajax回发的行为,我想你常常可以处理它的控制器或创建一个单独的POCO视图模型只支持Ajax路径。我知道有两篇文章对这两种类型的动作使用相同的模型,但我们发现通常有足够的差异,因此值得使用单独的视图模型。如果它们足够复杂,我们只是将通用代码分解出来。

+0

最后还有另一个解决方案,但这仍然是我认为的正确答案。 http://stackoverflow.com/questions/3472810/how-to-validate-a-model-in-a-jquery-postback – griegs 2010-08-13 04:23:06