【发布时间】:2010-06-15 03:24:55
【问题描述】:
我已经构建了一个 UserRepository 接口来与我的 LINQ to SQL 数据层进行通信,但我正试图弄清楚如何实现验证。
这是我的 AddUser 子例程的样子
Public Sub AddUser(ByVal about As String, ByVal birthdate As DateTime, ByVal openid As String, ByVal regionid As Integer, ByVal website As String) Implements IUserRepository.AddUser
Dim user = New User
user.About = about
user.BirthDate = birthdate
user.LastSeen = DateTime.Now
user.MemberSince = DateTime.Now
user.OpenID = openid
user.RegionID = regionid
user.UserName = String.Empty
user.WebSite = website
dc.Users.InsertOnSubmit(user)
dc.SubmitChanges()
End Sub
然后我的控制器将简单地调用AddUser(...)
但我对如何在此实现客户端和服务器端验证一无所知。
(我想我更喜欢使用 jQuery AJAX 并在服务器上进行所有验证,但我完全愿意接受意见)
编辑:
@vijaysylvester 的answer 非常完美,我只是想展示一个代码示例来说明我是如何实现它的。
UserService.vb
Imports System.ComponentModel.DataAnnotations
Namespace Domain
<MetadataType(GetType(UserMetaData))> _
Partial Public Class User : End Class
Public Class UserMetaData
<Required(ErrorMessage:="Username is required.")> _
<StringLength(30, ErrorMessage:="Username cannot exceed 30 characters.")> _
Public UserName As String
<StringLength(50, ErrorMessage:="Email Address cannot exceed 50 characters.")> _
<RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9+)*\\.([a-z]{2,4})$", ErrorMessage:="Not a valid email address.")> _
Public Email As String
<StringLength(256, ErrorMessage:="Web Address cannot exceed 256 characters.")> _
Public WebSite As String
<StringLength(4000, ErrorMessage:="Profile cannot exceed 4000 characters.")> _
Public About As String
End Class
#Region "Interface"
Public Interface IUserService
Sub UpdateUser(ByVal id As Integer, ByVal about As String, ByVal birthdate As DateTime, ByVal openid As String, ByVal regionid As Integer, ByVal username As String, ByVal website As String)
Sub UpdateUserReputation(ByVal id As Integer, ByVal AmountOfReputation As Integer)
Sub CloseUser(ByVal id As Integer)
Sub OpenUser(ByVal id As Integer)
Function GetAllUsers() As IList(Of User)
Function GetUserByID(ByVal id As Integer) As User
End Interface
#End Region
#Region "Service"
Public Class UserService : Implements IUserService
Private _UserRepository As IUserRepository
Public Sub New(ByVal UserRepository As IUserRepository)
_UserRepository = UserRepository
End Sub
Public Sub UpdateUser(ByVal id As Integer, ByVal about As String, ByVal birthdate As Date, ByVal openid As String, ByVal regionid As Integer, ByVal username As String, ByVal website As String) Implements IUserService.UpdateUser
Dim user = _UserRepository.GetUserByID(id)
user.About = about
user.BirthDate = birthdate
user.RegionID = regionid
user.UserName = username
user.WebSite = website
_UserRepository.UpdateUser(user)
End Sub
''# And the rest of my methods.
End Class
End Namespace
【问题讨论】:
标签: asp.net-mvc vb.net validation repository