Salut

Je travaille actuellement sur un UserControl personnalisé qui a pour fonction de générer soit un menu vertical, soit une liste de liens illustrés par des icones.

Etant donné que ce composant est présent dans toutes mes masterpages, j’ai créé 2 événements qui me permettent de déclencher l’enregistrement des statistiques de visite des pages.

Je précise que le projet utilise Ajax 3.0. mais que mon contrôle n’est jamais dans un updatepannel.

J’ai également créé une classe dérivée de EventArgs qui me renvoie les informations nécessaires à l’enregistrement des statistiques.

Voici le code de la classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
using System;
/// <summary>
/// Classe EventArg pour les linkbutton en vue des stats
/// </summary>
public class MenusEventArgs:EventArgs 
{
    private readonly string _strFromURL;
    private readonly string _strToURL;
    private readonly int _moduleId;
    //Constructor
    public MenusEventArgs(string strFromURL, string strToURL, int moduleId)
    {
        this._strFromURL = strFromURL;
        this._strToURL = strToURL;
        this._moduleId = moduleId;
    }
 
    #region Properties
    public string FromURL
    {
        get { return _strFromURL; }
    }
    public string ToURL
    {
        get { return _strToURL; }
    }
 
    public int ModuleId
    {
        get { return this._moduleId; }
    }
    #endregion
}
Dans mon user control, j’ai créé 2 événements avec leurs délégués.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
    public delegate void MenusEventHandler(object sender, MenusEventArgs e);
    public delegate void MenuLoadedHandler(object sender, MenusEventArgs e);
    public event MenusEventHandler MenusNavigationRequested;
    public event MenuLoadedHandler MenuLoaded;
J'appelle l'évennement MenuNavigationRequested depuis le Item Command de mon repeater (L'autre fonctionne parfaitement) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
    protected void rptMenu_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "goTo":
                string strFrom = e.CommandArgument.ToString().Split('|')[0];
                string strTo = e.CommandArgument.ToString().Split('|')[1];
                string modId = e.CommandArgument.ToString().Split('|')[2];
                MenusEventArgs _e = new MenusEventArgs(strFrom, strTo, int.Parse(modId));
                //--ICI>> MenusNavigationRequested(this, _e); //ToDo Problème a résoudre, peut être AJAX, je ne sais pas... Laurent
                Response.Redirect(strTo);
                break;
        }
    }
J'ai une erreur sur le déclenchement de l'évennement (pas à tous les coups) m'indiquant que MenusNavigationRequested est null.

On a regardé ici à plusieurs ingés, on a pas compris...

Quelqu'un aurait une idée ?

D'avance merci

Laurent