Bonjour,

Je fais face à un problème que je n'arrive pas à comprendre.

Si je crée une page "Text.aspx" avec dedans :
Code html : 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
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        List 1 : <asp:DropDownList ID="List1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="List1_SelectedIndexChanged" /><br />
        List 2 : <asp:DropDownList ID="List2" runat="server" AutoPostBack="true" /><br />
    </form>
</body>
</html>

Code csharp : 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class Test : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List1.Items.Add("");
            List1.Items.Add(new ListItem("Element 1", "1"));
            List1.Items.Add(new ListItem("Element 2", "2"));
            List1.Items.Add(new ListItem("Element 3", "3"));
            List1.Items.Add(new ListItem("Element 4", "4"));
        }
    }
 
    protected void List1_SelectedIndexChanged(object sender, EventArgs e)
    {
        List2.Items.Clear();
 
        switch (List1.SelectedValue)
        {
            case "1":
                List2.Items.Add(new ListItem("Element 1.1", "1.1"));
                List2.Items.Add(new ListItem("Element 1.2", "1.2"));
                break;
            case "2":
                List2.Items.Add(new ListItem("Element 2.1", "2.1"));
                List2.Items.Add(new ListItem("Element 2.2", "2.2"));
                List2.Items.Add(new ListItem("Element 2.3", "2.3"));
                List2.Items.Add(new ListItem("Element 2.4", "2.4"));
                break;
            case "3":
                List2.Items.Add(new ListItem("Element 3.1", "3.1"));
                break;
            case "4":
                break;
            default:
                List2.Items.Add("Choisissez Liste 1");
                break;
        }
    }
}

Lorsque je sélectionne un élément dans la première liste, tout va bien, la page de recharge avec la seconde liste peuplée.

Maintenant, j'ai une MasterPage :
Code html : 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
 
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="Masters_MasterPage" %>
<!DOCTYPE html>
<html>
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>Plannis</title>
        <link href="~/styles/main.css" rel="stylesheet" type="text/css" />
        <link href="~/styles/topmenu.css" rel="stylesheet" type="text/css" />
        <link href="~/styles/mainmenu.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/JavaScripts/common.js") %>"></script>
        <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/JavaScripts/calendar.js") %>"></script>
        <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/JavaScripts/datetimeselector.js") %>"></script>
        <asp:ContentPlaceHolder id="Head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
            <menu:MainMenu ID="MainMenu1" runat="server" />
            <menu:TopMenu ID="TopMenu1" runat="server" />
            <div id="maincontainer">
                <asp:ContentPlaceHolder id="PageContainer" runat="server" />
            </div>
        </form>
    </body>
</html>

Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class Masters_MasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
}

Ainsi qu'une classe de base pour gérer aisément un contexte applicatif :
PlannisPage.cs
Code csharp : 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
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
 
/// <summary>
/// Description résumée de PlannisPage
/// </summary>
public abstract class PlannisPage : Page
{
    public PlannisContext PlannisContext = null;
 
    protected abstract bool MustAuthenticated();
 
    protected override void OnPreInit(EventArgs e)
    {
        base.OnPreInit(e);
 
        PlannisContext = new PlannisContext();
 
        if (PlannisContext.LoginUser == null && MustAuthenticated())
        {
            Logger.Instance.LogMessage("PlannisPage", Logger.ErrorLevel.Error, $"Tentative d'accès à la page {Page.Title} sans être loggé !");
            Response.Redirect("~/Connection/Login.aspx");
            return;
        }
    }
}


Et donc ma page de test est modifiée en conséquence :

Test.aspx :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<%@ Page Title="Plannis - Mes tickets" Language="C#" MasterPageFile="~/Masters/MasterPage.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="PageContainer" Runat="Server">
    <div class="tuile large">
        List 1 : <asp:DropDownList ID="List1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="List1_SelectedIndexChanged" /><br />
        List 2 : <asp:DropDownList ID="List2" runat="server" AutoPostBack="true" /><br />
    </div>
</asp:Content>

Code csharp : 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
public partial class Test : PlannisPage
{
    protected override bool MustAuthenticated()
    {
        return false;
    }
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List1.Items.Add("");
            List1.Items.Add(new ListItem("Element 1", "1"));
            List1.Items.Add(new ListItem("Element 2", "2"));
            List1.Items.Add(new ListItem("Element 3", "3"));
            List1.Items.Add(new ListItem("Element 4", "4"));
        }
    }
 
    protected void List1_SelectedIndexChanged(object sender, EventArgs e)
    {
        List2.Items.Clear();
 
        switch (List1.SelectedValue)
        {
            case "1":
                List2.Items.Add(new ListItem("Element 1.1", "1.1"));
                List2.Items.Add(new ListItem("Element 1.2", "1.2"));
                break;
            case "2":
                List2.Items.Add(new ListItem("Element 2.1", "2.1"));
                List2.Items.Add(new ListItem("Element 2.2", "2.2"));
                List2.Items.Add(new ListItem("Element 2.3", "2.3"));
                List2.Items.Add(new ListItem("Element 2.4", "2.4"));
                break;
            case "3":
                List2.Items.Add(new ListItem("Element 3.1", "3.1"));
                break;
            case "4":
                break;
            default:
                List2.Items.Add("Choisissez Liste 1");
                break;
        }
    }
}

Et pof ! Ca ne fonctionne plus. Le AutoPostBack ne déclenche plus rien !

Comment résoudre mon souci ? Je n'arrive même pas à comprendre pourquoi ça ne fonctionne plus.
Aucune erreur côté .NET pas plus que dans le debugger JS.