1

私のコントローラー「Language」には、次のCreateactionメソッドがあります

    <HttpPost()>
    Function Create(language As Language) As ActionResult
        Try
            If ModelState.IsValid Then
                Dim name As String = language.Name
                db.Languages.Add(language)
                db.SaveChanges()
                Return RedirectToAction("Index", New System.Web.Routing.RouteValueDictionary(New With {.languageName = name, .onSuccess = ActionType.CREATE}))
            End If
        Catch ex As DataException
            ViewBag.ErrorTitle = Resources.Commands.UnableToCreate
            ViewBag.ErrorMessage = Resources.Commands.TryAgainMessage
        End Try
        Return View(language)
    End Function

作成する前に、データベースに同じ値の重複が存在するかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

1
Dim Exists as Boolean = db.Languages.Any(Function (x) x.languageName = language.languageName)
If Not Exists Then
  db.Languages.Add(language)
  db.SaveChanges()
End If

許してください、私のVBはとても錆びています

またはIValidatableObject、チェックを実行するモデルに実装します(おそらくより良いアプローチ):

Public Class Language
  Implements IValidatableObject

  ' Model properties

  Public Function Validate(ByVal validationContext As ValidationContext) As IEnumerable(Of ValidationResult) Implements IValidatableObject.Validate
    Dim results As List(Of ValidationResult) = New List(Of ValidationResult)

    '
    ' check if langauge already exists and assign error
    ' to results if necessary
    '

    Return results
  End Function
End Class

MVC3モデル検証に関するリンク:http ://www.devproconnections.com/article/aspnetmvc/modellevel-validation-aspnet-mvc-3-136111

于 2012-12-21T18:15:46.423 に答える