J'ai le code ci-dessous dans ma solution actuelle, qui renvoie une erreur de 'La valeur' 'est invalide'. L'extrait ci-dessous a été raccourci pour afficher simplement la zone à problème, par opposition à l'ensemble de l'ActionResult.Pourquoi ce code ne fonctionne-t-il pas dans une autre solution?
Dim tComment As New hdComment
tComment.Comment = collection("wmd-input")
tComment.MadeOn = DateTime.Now
tComment.UserID = Session("LoggedInUser")
tComment.CallID = id
If Not tComment.Comment.Trim().Length = 0 Then
db.hdComments.InsertOnSubmit(tComment)
End If
db.SubmitChanges()
Return Redirect("/Calls/Details/" & id)
Cependant, dans un précédent projet, je l'ai utilisé exactement le même code, même le point de vue est le même, mais il retourne toujours l'erreur ci-dessus.
Tout reçoit une valeur correcte.
La seule chose qui est différente, c'est que c'est un projet différent.
Je suis un peu perdu avec celui-ci.
Vous avez des idées?
EDIT Pour référence, voici l'ensemble ActionResult.
'
' POST: /Calls/Details/5
<Authorize()> _
<AcceptVerbs(HttpVerbs.Post)> _
<ValidateInput(False)> _
Function Details(ByVal id As Integer, ByVal collection As FormCollection) As ActionResult
Dim calls As hdCall = callRepository.GetCall(id)
ViewData("MyCallID") = calls.CallID
ViewData("UserThatLogged") = calls.UserID
ViewData("TimeLogged") = calls.loggedOn.ToLongDateString & " " & calls.loggedOn.ToLongTimeString
ViewData("Title") = calls.Title
Dim dataContext As New CustomerServiceModelDataContext
ViewData("Status") = New SelectList(dataContext.hdStatus, "StatusID", "Status", calls.StatusID)
ViewData("Type") = New SelectList(dataContext.hdCategories, "CategoryID", "Title", calls.CategoryID)
ViewData("Company") = calls.hdCompany.Company
ViewData("Priority") = New SelectList(dataContext.hdPriorities, "PriorityID", "Priority", calls.PriorityID)
ViewData("CallDetails") = calls.CallDetails
ViewData("Customer") = calls.hdCustomer.CustomerName
ViewData("CustomerID") = calls.hdCustomer.CustomerID
ViewData("CustomerCallCount") = callRepository.CountCallsForThisCustomer(calls.hdCustomer.CustomerID).Count()
ViewData("ContactNumber") = calls.hdCustomer.Telephone
ViewData("AssignedTo") = New SelectList(dataContext.aspnet_Users, "UserName", "UserName", calls.AssignedTo)
Dim callComments = callRepository.GetCallComments(id)
Dim db As New CustomerServiceModelDataContext
Try
Dim tComment As New hdComment
tComment.Comment = collection("wmd-input")
tComment.MadeOn = DateTime.Now
tComment.UserID = Session("LoggedInUser")
tComment.CallID = id
If Not tComment.Comment.Trim().Length = 0 Then
db.hdComments.InsertOnSubmit(tComment)
End If
'Update any call changes
Dim tCall = (From c In db.hdCalls _
Where c.CallID = id _
Select c).SingleOrDefault
tCall.updatedOn = DateTime.Now
tCall.UpdatedBy = Session("LoggedInUser")
tCall.StatusID = collection("Status")
tCall.AssignedTo = collection("AssignedTo")
tCall.CategoryID = collection("Type")
tCall.PriorityID = collection("Priority")
db.SubmitChanges()
Return Redirect("/Calls/Details/" & id)
Catch ex As Exception
ModelState.AddModelError("Error", ex)
Return View(callComments)
End Try
Return View(callComments)
End Function
Le reste du code fonctionne, si le champ WMD-entrée est laissée vide sur la forme, il est seulement quand il y a quelque chose en elle-t-il jeter l'erreur.
EDIT peu d'une mise à jour cela, cette ligne:
If Not tComment.Comment.Trim().Length = 0 Then
lit maintenant
If (Not tComment.Comment.Trim().Length = 0) Then
et les mises à jour de page si rien est dans la boîte WMD-entrée, mais si est, il renvoie le The value '' is invalid.
Avez-vous vérifié que Session ("LoggedInUser") est correcte? – sisve
Oui, le problème semble provenir uniquement de 'tComment.Comment = collection (" wmd-input ")' et 'Si pas tComment.Comment.Trim(). Length = 0 Alors db.hdComments.InsertOnSubmit (tComment) End If ' – LiamGu
Quel est le type de données de' tComment.Comment'? –