2010-09-09 14 views
1

J'ai une classe commePourquoi ne le DefaultModelBinder pas se lier à des propriétés Char avec une valeur de " « c

Public Class Task 
    Property DuplexType As Char 
    Property Name As String 
End Class 

Dans mon contrôleur j'ai une action qui ressemble à

<HttpPost()> 
Function Edit(ByVal task As Task) As ActionResult 
    Dim duplexType = task.DuplexType 
    Dim valid = ModelState.IsValid 
    Return RedirectToAction("Index") 
End Function 

De l'avis , DuplexType = "" (espace unique) et Name = "Foo". Pourquoi la propriété DuplexType n'a-t-elle pas de valeur? Si j'attribue un autre caractère, cela fonctionne bien. Au nom du contrôleur = « toto » mais DuplexType = « (vide).

également ModelState.IsValid = false si DuplexType = » ».

Répondre

0

Jetez un oeil à l'objet de réponse et d'examiner les valeurs étant peuplées Vous verrez probablement que les valeurs sont tronquées et donc perdent de l'espace.Si possible, essayez d'UrlEncode les valeurs

Où j'ai dû conserver des espaces de fin dans mes propres projets, j'ai fini par devoir placez les délimiteurs sur le paramètre et supprimez-les ensuite dans la méthode d'action

+0

Quand je regarde HttpConte xt.Request.Form.Item ("DuplexType") c'est "" qui est correct mais l'objet de tâche n'obtient pas la valeur et le ModelState.IsValid = false –