Asp.net mvc ASP.NET MVC如何让自定义验证器与客户端验证一起工作

Asp.net mvc ASP.NET MVC如何让自定义验证器与客户端验证一起工作,asp.net-mvc,validation,attributes,Asp.net Mvc,Validation,Attributes,以下验证在客户端和服务器端都可以正常工作 <DisplayName("website")> _ <StringLength(256, ErrorMessage:="Web Address cannot exceed 256 characters.")> _ <RegularExpression("^http(s?)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$", ErrorMessage:="Not

以下验证在客户端和服务器端都可以正常工作

    <DisplayName("website")> _
    <StringLength(256, ErrorMessage:="Web Address cannot exceed 256 characters.")> _
    <RegularExpression("^http(s?)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$", ErrorMessage:="Not a valid website address")> _
    Public Property WebSite As String
    <DisplayName("website")> _
    <StringLength(256, ErrorMessage:="Web Address cannot exceed 256 characters.")> _
    <Website(ErrorMessage:="Not a valid website address")> _
    Public Property WebSite As String
我显然错过了一些非常简单的东西


提前感谢。

看一看Phil Haack,它演示了如何为自定义属性设置客户端验证。基本上,您需要编写并注册一个自定义项。

可能只是因为我不太懂C,但这看起来确实很复杂。这是唯一的方法。客户端验证通过检查您使用的属性并生成必要的javascript代码来工作。编写自定义验证方法时,无法自动生成javascript。如果在验证方法中使用反射或调用外部web服务来执行验证,会怎么样。你期望客户端验证如何自动工作?不,我明白了,我只是“使用”了,因为我使用的自定义验证器实际上是从基本正则表达式验证器派生出来的,所以会有一些自动魔法为我构建它。如果我仍然需要手动编写Javascript,那么使用自定义正则表达式验证器简化服务层验证是没有意义的。我只是希望可以反复使用实际的正则表达式,以便在不复制/粘贴的情况下实现更简单的实现。您所要做的就是注册RegularExpressionAttributeAdapter作为新验证属性的适配器。见此:
Public Class WebsiteAttribute : Inherits RegularExpressionAttribute
    Public Sub New()
        MyBase.new("^http(s?)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$")
    End Sub
End Class