Bonjour,
J'appelle une vue partielle sur ma page.
Cette vue comporte un script en entête, pour gérer des variables issues de la BdD et définir le css en conséquence.
Cela fonctionnait bien. Depuis que la vue est affichée comme vue partielle, ce script n'est plus exécuté.
La vue partielle (résumée, c'est une itération) :
Je précise le problème.
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 <script> // ---------- S T A T U T --------------- var Check_Statut = function (ValReserve, id) { var StatutText = "statut_" + id; var myBool = (ValReserve === 'true'); if (myBool == false) { document.write("<i class='fa-solid fa-lock-open' id='lock_" + id + "' style='margin-left: 5px; cursor: pointer;color:black; ' title='Réserver cet article' onclick='Reserver(true," + id + ")'></i>"); document.getElementById(StatutText).style = "color:green;font-weight:600;font-size: 12px;"; } else { document.write("<i class='fa-solid fa-lock' id='lock_" + id + "' style='margin-left: 5px; margin-right: 4px; cursor: pointer;color:coral; ' title='Annuler la réservation' onclick='Reserver(false," + id + ")'></i>"); document.getElementById(StatutText).style = "color:coral;font-weight:600;font-size: 12px;"; } }; </script> @foreach (var item in Model) { ...(table, tr, td, etc...) <td class="ligne-table"> <i class="fa-solid fa-marker" style="margin-left: 5px;cursor: pointer;" title="Modifier l'article" href="/Home/ArticleDetail/@Html.DisplayFor(modelItem => item.Id)"></i> <script type="text/javascript">Check_Statut('@Html.DisplayTextFor(modelItem => item.Reserver).ToLower()', '@Html.DisplayFor(modelItem => item.Id)')</script> <i class="fa-regular fa-trash-can" style="margin-left: 5px;margin-right: 5px;cursor: pointer;" title="Supprimer l'article"></i> </td> ... }
Quand la vue partielle est appelée via
Le script contenu dans la vue partielle s'exécute correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @await Html.PartialAsync("_ArticlesListPartial")
C'est quand j'utilise une fonction Ajax que cela ne fonctionne plus.
Cela a peut-être (probablement) un lien avec l'utilisation de 'innerHTML'. que j'utilise pour "charger" la 'div'.
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 function LoadDetailPartialView(MenuName) { if (typeof MenuName == 'undefined') MenuName = 'ListArticles'; $.ajax({ url: '@Url.Action("ChangeVendeurPartial", "Articles")', type: 'GET', cache: false, data: { Menu: MenuName } }).done(function (result) { if (result.redirectTo) do{ // Attend que la valeur de 'result' soit chargée, car 'ChangeVendeurPartial' est asynchrone. } while(result.lenght < 1); MainPartial.innerHTML = result; }); };
'MainPartial.html' (souvent rencontré à la place dans mes recherches) ne fonctionnait pas du tout pour moi.
Dans ma recherche j'ai vu un post dans lequel un gars disait avoir résolu le problème.
Sauf qu'il ne détaille pas assez bien sa solution pour moi, et je n'y comprends rien: https://stackoverflow.com/questions/...21735#79321735
I got the answer. All I needed to do was to add new{@class = "ddlClass'} and new {@class = "ddlType"} to the Partial. Then I just copied the script to the Partial and changed the references from referencing the Id to referencing the new classes as below:
Merci pour votre aide
Partager