2008-10-19 4 views
0

J'ai un bouton qui ajoute un programme utilisateur déjà défini. Je reconstruis chaque contrôle sur Postback et ils se montrent bien. Si je mets du texte dans la zone de texte, ça se voit bien, mais mes images perdent leur URL. Une idée de pourquoi ou comment je peux résoudre ce problème?ImageUrl perdue à la publication avec des contrôles dynamiques, mais les zones de texte conservent leur valeur

J'ai essayé d'ajouter AJAX updatepanel pour voir si cela aiderait, mais ce n'est pas le cas. Pour plus d'explications - J'ai un bouton qui après les clics définissent l'URL de l'image - Je mets également cette valeur dans la boîte de texte juste pour voir si la même chose arrive - après la publication, ma boîte de texte a toujours la valeur, mais l'image ne le fait pas - et toutes mes autres images ASP.Net perdent leur image et elles sont définies directement sur les contrôles (ie: ImageUrl)

--- mise à jour OK, j'ai trouvé quelques informations supplémentaires sur mon problème - quelques solutions mais il reste un problème. La raison pour laquelle les images perdaient leur URL est qu'elles étaient et non des images ASP.Net - ASP.Net mémorise les valeurs lorsqu'elles sont recréées en postback - cependant l'image principale qui change par javascript perd sa valeur - I Je suis très certain que c'est parce que javascript est utilisé pour le changer, à la post retour il revient à la valeur précédente ... donc pour une solution, je vais essayer de le placer dans une valeur cachée, puis utiliser cette valeur pour définir ImageUrl de l'image ...

Répondre

1

Vous avez corrigé <img> est un contrôle html, tandis que <asp:Image> est un contrôle serveur. Tant que les contrôles serveur ont activé viewstate, ils conservent leurs valeurs pendant les publications.

1

Vous avez raison de dire que la modification de l'URL d'une image via JavaScript ne sera pas renvoyée pendant la publication, car il ne s'agit pas d'une valeur de formulaire. Par conséquent, il sera perdu pour toujours si vous ne l'enregistrez pas dans un champ de formulaire, tel que le champ masqué que vous avez suggéré.

0

L'image n'est pas un champ de formulaire. C'est pourquoi sa valeur n'est jamais affichée sur le serveur.

La raison pour laquelle vos contrôles asp: Image conservent de la valeur pendant la publication est qu'ils sont stockés dans viewstate (qui est stocké dans un champ masqué). Lorsque vous cliquez sur le bouton, viewstate est renvoyé au serveur et asp.net définit la propriété ImageUrl du contrôle d'image de viewstate dans les premiers événements du cycle de vie de la page.

En résumé, les valeurs des contrôles de formulaire côté serveur sont disponibles après la publication. De même si vous avez des champs de formulaire html normaux (https://www.w3schools.com/html/html_form_elements.asp), vous obtiendrez sa valeur en utilisant la collection Request.Form.

Vous définissez votre src Image en utilisant javascript (et qui n'est évidemment pas en viewstate d'origine), c'est pourquoi vous ne recevez pas sa valeur en postback. Vous devez utiliser le champ masqué pour définir la valeur en utilisant javascript, qui peut être disponible après la publication.

Questions connexes