2010-10-04 4 views
0

J'ai utilisé Visual Web Developer 2010 et ASP .NET avec MVC2 pour créer un module de gestion des clients simple, où la vue permettra d'entrer le prénom, le nom, l'adresse , etc., et lors de la soumission, un nouvel "ID" sera attribué à la propriété CustomerID de l'instance CustomerModel.Après la mise à jour d'un modèle, les valeurs ne reflètent pas sur la vue

La méthode du contrôleur (CustomerController) pour la création de la clientèle est comme ci-dessous:

<HttpPost()> _ 
Public Function CreateCustomer(ByVal model As CustomerModel) As ActionResult 
    model = Me.customerServiceClientValue.CreateCustomer(model) 
    Return (View(model)) 
End Function 

Je peux voir que le contrôle atteint dans la méthode createCustomer(), et il appelle le service à la clientèle pour créer le client. Le service renvoie également un client avec un nouvel identifiant. Comme dans la méthode, l'instance de client renvoyée par l'appel de service est renvoyée à la variable "modèle" qui est entrée. Cette instance de modèle est transmise à la "vue" dans l'instruction return. Cependant, lorsque la vue est actualisée, je ne vois pas de valeur pour le champ ID client.

je la marge suivante pour le champ ID client:

<div class="editor-label"> 
    <%: Html.LabelFor(Function(model) model.CustomerID)%> 
</div> 
<div class="editor-field"> 
    <%: Html.TextBoxFor(Function(model) model.CustomerID)%> 
    <%: Html.ValidationMessageFor(Function(model) model.CustomerID)%> 
</div> 

Qu'est-ce que je fais mal? Pourquoi ne reçois-je pas l'identifiant client sur le terrain, bien que le modèle contienne le nouveau code client? Appréciez toutes vos aides.

Merci et salutations,

Dinesh Jayadevan

Répondre

2

Parce que TextBoxFor (et d'autres aides) regarde toujours les valeurs post premier à afficher. Si aucune valeur de poste n'existe, alors il regarde le modèle. La raison en est que si votre formulaire contient des erreurs, vous voulez généralement que votre formulaire affiche les mêmes données que celles qui ont été publiées plutôt que certaines données de modèle, éventuellement modifiées.

Vous pouvez appeler le ModelState.Clear(); dans votre contrôleur pour éviter cela mais ce n'est pas une bonne idée.

Plus d'info sur le http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

Questions connexes