У меня проблема с тем, что gfrizzle сказал, что имел, но затем сказал здесь , что он это исправил Я посмотрел на пост и реализовал то, что он сказал, чтобы делать, но он все еще не работает для меня (если gfrizzle видит это, я хотел бы увидеть его код)
Чтобы переформулировать проблему, я хочу создать бизнес-правила, которые отделены от кода DAL, сгенерированного моей моделью L2S. В соответствии с примером NerdDinner (который написан на C #) этот код должен быть в частичном классе, как мой ниже.
Если кто-нибудь может помочь, дайте мне знать, что мой частичный класс в моем коде класса контроллера написан ниже
<HandleError()> _
Public Class PreOrderController
Inherits System.Web.Mvc.Controller
Private db As New FOTAZDataContext 'with EF this would be FOTAZDBEntities, see the web.config
' GET: /PreOrder/Create
Function Create() As ActionResult
Dim registrationToCreate As New Registration()
PopulateDropDownListBoxesForCreate()
Return View()
End Function
' POST: /PreOrder/Create include:="MerchandiseID,Quantity"
<AcceptVerbs(HttpVerbs.Post)> _
Function Create(<Bind(Exclude:="ID")> ByVal preOrderToCreate As PreOrder) As ActionResult
If ModelState.IsValid Then
Try
preOrderToCreate.RegistrationID = GetRegistrationID()
db.PreOrders.InsertOnSubmit(preOrderToCreate)
db.SubmitChanges()
Return RedirectToAction("Index")
Catch
For Each issue In preOrderToCreate.GetRuleViolations()
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage)
Next
End Try
End If
PopulateDropDownListBoxesForCreate()
Return View("Create")
End Function
Sub PopulateDropDownListBoxesForCreate()
Dim merchandise = db.Merchandises.ToList()
ViewData("MerchandiseID") = New SelectList(merchandise, "ID", "Descr")
End Sub
Imports System.Data.Linq
Partial Public Class PreOrder
Public ReadOnly Property IsValid() As Boolean
Get
Return (GetRuleViolations().Count() = 0)
End Get
End Property
Public Function GetRuleViolations() As IEnumerable(Of RuleViolation)
Dim ret = New List(Of RuleViolation)()
If Not IsNumeric(Quantity) Then
ret.Add(New RuleViolation("Quantity", "Quantity is not numeric"))
End If
Return ret
End Function
'This isn't getting called.
Private Sub OnValidate(ByVal action As ChangeAction)
If Not IsValid Then
Throw New ApplicationException("Rule violations prevent saving")
End If
End Sub
End Class