Avant le chargement de la page, je dois vérifier le niveau de sécurité de l'utilisateur. Cela déterminera quels éléments de notre barre de navigation ils peuvent voir. J'ai essayé deux méthodes à l'exécution de cet appel ajax, à la fois dans la fonction $(document).ready
.Faire un appel Ajax avant chargement de la page
(le nom div
container
Réunit les ul
dans le code HTML ci-dessous)
$(document).ready(function ($) {
//First attempt
$('#container').load(
$.ajax({
type: 'GET',
url: '@Url.Action("CheckSecurity","Home")'
})
);
//Second attempt
window.onload = function() {
$.ajax({
type: 'GET',
url: '@Url.Action("CheckSecurity","Home")'
});
};
});
Depuis c'est un site ASP MVC 3, j'ai mis un point d'arrêt dans la méthode CheckSecurity
. Je peux dire qu'aucun appel ne fonctionne parce qu'il n'est jamais déclenché.
La méthode du contrôleur est ci-dessous
public ActionResult CheckSecurity()
{
ViewBag.UserName = Security.GetUserName(User);
ViewBag.Admin = Security.IsAdmin(User);
ViewBag.ITsupport = Security.IsItSupport(User);
ViewBag.Read = Security.IsViewer(User);
ViewBag.Modify = Security.IsModifier(User);
return View();
}
Ceci est censé vérifier le niveau de sécurité de l'utilisateur, placez la valeur boolean
dans le ViewBag, puis déterminer si oui ou non pour afficher le Admin Features
déroulant produit ci-dessous
<li class="dropdown">
<a href="#"
class="dropdown-toggle"
data-toggle="dropdown"
data-hover="dropdown">
Admin
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>@Html.MenuLink("Products", "Index", "Product")</li>
<li>@Html.MenuLink("Product Training", "Index", "Course")</li>
<li>@Html.MenuLink("Continuing Ed", "Index", "ContEdCourse")</li>
@if (ViewBag.Admin)
{
<li>@Html.MenuLink("Admin Features", "Index", "DropDownValues")</li>
}
</ul>
</li>
Lorsque la page tente de charger, il se bloque à la place avec cette erreur de pointage à la ligne @if (ViewBag.Admin)
:
Cannot convert null to 'bool' because it is a non-nullable value type
Toute aide/suggestion grandement appréciée. THX!
Avez-vous un élément avec un 'id =" container "'? et cet élément a-t-il même un événement de chargement? (seulement les scripts d'images iframes et la fenêtre ont des événements de chargement). la deuxième tentative aurait dû fonctionner bien. –