2010-11-08 4 views
-2

Si vous avez Html.Hidden(...) à l'intérieur Ajax.BeginForm et que vous soumettez le formulaire plus d'une fois et que vous mettez à jour la valeur du champ caché en utilisant ViewData ou autre chose, il ne sera pas mis à jour. Peut-être parce que Html.Hidden est un contrôle côté serveur. (Html.Hidden est à l'intérieur du UpdateTargetId div)Ajax.BeginForm - bug possible - MVC

Une autre façon dont les choses se briser est s'il y a un Html.TextBox intérieur Ajax.BeginForm ou quelque chose et vous avez besoin de se cacher/montrer qu'il basé sur ce qui sort de cette demande Ajax en utilisant une sorte de si, clause else. Il n'apparaîtra pas/disparaîtra.

+3

Que demandez-vous? – jfar

Répondre

3

Cela a été demandé des millions de fois ici et je l'ai répondu des millions de fois - c'est par conception: les assistants HTML utilisent toujours la valeur POSTed lors de la liaison avant de regarder le ViewData ou le modèle. Cela signifie que ne peut pas modifier la valeur dans l'action du contrôleur et c'est par conception. Vous pouvez écrire votre propre aide HTML si vous ne l'aimez pas cette conception ou tout simplement:

<input type="hidden" name="foo" value="<%: ViewData["foo"] %>" /> 

Si vous utilisez aide html:

<%: Html.Hidden("foo") %> 

s'il y a une valeur POSTé foo est cette valeur qui est va être utilisé, peu importe ce que vous mettez ViewData.

+0

mais cela laisse encore ma deuxième préoccupation. Masquer/afficher Html.TextBoxx en fonction de ce que contient le modèle. – TPR

+0

Votre deuxième préoccupation est totalement incompréhensible. Tout ce que j'ai compris c'est cacher/montrer et apparaître disparaître. Peut-être pourriez-vous essayer d'être un peu plus précis. Ne pouvez-vous pas simplement tester la valeur du modèle dans la vue et en fonction de cette valeur inclure ou ne pas inclure cette TextBox? –

+0

c'est exactement ce que je faisais. Testez la valeur du modèle dans la vue et en fonction de cette valeur, incluez ou non ce TexBox. Quand je débogue le code, il frappe même la bonne clause "si". Pourquoi ce n'est pas la sortie à l'écran est ma préoccupation. – TPR

Questions connexes