Я создал интерфейс UserRepository для общения с моим LINQ к уровню SQL Data, но я пытаюсь выяснить, как реализовать проверку.
Вот то, на что похожа моя подпрограмма 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(...)
Но у меня нет малейшего представления о том, как реализовать и сторону клиента и серверную проверку на этом.
(Я думаю, что предпочел бы использовать Ajax jQuery и делать всю проверку на сервере, но я полностью открыт для мнений),
Ответ @vijaysylvester был прекрасен, я просто думал, что покажу пример кода того, как я реализовал его.
UserService.vb
Imports System.ComponentModel.DataAnnotations
Namespace Domain
_
Partial Public Class User : End Class
Public Class UserMetaData
_
_
Public UserName As String
_
_
Public Email As String
_
Public WebSite As String
_
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
Хотя имеет смысл проводить валидацию на стороне сервера и клиента вручную, я бы сказал, что можно использовать фреймворки валидации с открытым исходным кодом, такие как XVal.
Перейдите по ссылке ниже.
Это так же просто, как просто настроить свойства, которые необходимо проверить.
Например,
[Required] [StringLength(50)] public string Name { get; set; }
Приведенный выше фрагмент кода проверяет, является ли имя допустимой строкой и ее размер не превышает 50.
Существует множество встроенных валидаторов (, включая регулярные выражения ), которые мы можем использовать для разных типов данных, таких как Date.
Надеюсь, это поможет.
Спасибо, Виджай.
Создайте частичный класс вашей пользовательской модели и добавьте валидацию для ваших входных данных. Если у вас уже есть помощники html, созданные для проверки в вашем представлении (обычно выполняются автоматически при создании нового строго типизированного представления), вы можете просто поместить в свой контроллер оператор try catch, чтобы перехватить ошибки и передать их обратно в представление через состояние модели. .
Посмотрите это: http://www.asp.net/mvc/tutorials/validation-with-the-data-annotation-validators-cs
Кажется, объясняет немного лучше, чем мой пробег на посту ...