2009-10-23 9 views
0

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.

+0

Avez-vous vérifié que Session ("LoggedInUser") est correcte? – sisve

+0

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

+0

Quel est le type de données de' tComment.Comment'? –

Répondre

0

J'ai réussi à résoudre ce problème, le problème réside en fait dans les Contraintes de clé Foriegn entre hdCalls et hdComments. J'ai retiré les contraintes et les ai recréées et tout à coup, tout s'est bien passé.

0

Il vous manque probablement une référence. Ou la version du framework est différente.

Est-ce la même machine de développement, est-ce que asp.net-mvc est installé dans les deux endroits?

+0

Oui, même machine avec ASP.NET MVC 1.0. – LiamGu

+0

Pouvez-vous vérifier s'il y a une différence de références dans les 2 projets. –

+0

Oui, les références sont identiques. – LiamGu

Questions connexes