J'ai un menu usercontrol appelé LeftMenu qui contient une liste de liens. Il est sur la page ascx en tant que tel:Le gestionnaire d'événements de contrôle utilisateur a été perdu lors de la publication
<asp:BulletedList ID="PublisherList" DisplayMode="LinkButton" OnClick="PublisherList_Click" cssClass="Menu" runat="server"></asp:BulletedList>
Je Databind la liste dans le page_load sous if(!isPostBack)
Je vais avoir un problème sur une page qui charge le contrôle. Lorsque la page est chargée, le gestionnaire d'événements se déclenche. Cependant, lorsque la page est postée, elle ne se déclenche plus et dans IE8, lorsque je débogue, j'obtiens "Erreur d'exécution Microsoft JScript: Objet attendu" dans Visual Studio pointant sur "__doPostBack ('LeftMenu $ PublisherList', '0') " Dans FF, je ne reçois pas l'erreur, mais rien ne se passe. Je pas charger dynamiquement le contrôle, il est chargé sur la page ASPX en utilisant:
<%@ Register TagPrefix="Standards" TagName="LeftMenu" Src="LeftMenu.ascx" %>
<Standards:LeftMenu ID="LeftMenu" runat="server"/>
Toutes les idées de l'endroit où je perdre le gestionnaire d'événements? Je viens juste de me rendre compte que cela se passe sur un autre contrôle utilisateur que j'ai également. Une zone de texte et un bouton et j'utilise le bouton par défaut pour m'assurer que l'appui sur la touche Entrée utilise ce bouton. .Net convertit que dans le code HTML à:
<div id="SearchBarInclude_SearchBar" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'SearchBarInclude_QuickSearchButton')">
dès que j'entrer une clé dans la boîte, je reçois une erreur javascript sur la ligne disant « objet prévu. » Il semble que les deux problèmes sont liés. Modifier à nouveau: Je pense que j'ai besoin de clarifier. Ce n'est pas que je clique sur l'élément de menu et il ne peut pas trouver l'élément sélectionné sur la publication. J'ai cette page de recherche avec la navigation à gauche sur elle, puis le contenu principal de la page est quelque chose qui provoque une publication. Tout va bien avec cette publication. Une fois que cette page a été postée, maintenant si je clique sur la liste à puces dans la navigation de gauche, j'obtiens une erreur javascript et elle échoue. Le paramètre page_init du contrôle LeftMenu n'est jamais appelé.
Que faire si le menu et la liste contiennent 100 ou 1000 éléments? Devraient-ils encore être stockés dans l'état d'affichage? – Phaedrus
Idéalement, ViewState meurt d'une mort horrible et ne revient jamais pour que ces mystères de PostBacks n'éveillent jamais leurs têtes hideuses et que nos pages restent légères et aérées ;-) Ceci étant dit, il s'agit d'un menu de gauche sur un site web, donc je doute qu'il y ait plus que quelques articles. De toute évidence, si c'était une sorte d'appel de base de données, vous voudriez le mettre en cache et cela pourrait aider à garder l'appel de page léger et ne pas exiger ViewState, mais vous n'êtes pas garanti que la liste sur laquelle travaille PostBack est la même comme l'original vu par l'utilisateur (si le cache expire). –
Le supprimer de if (! IsPostBack) {...} n'aide pas. Les données changent rarement, dois-je encore le stocker dans le viewstate? –