在页面加载之前,我需要检查用户的安全级别。这将决定他们能够看到我们导航栏的哪些元素。我已经尝试了两种方法来运行这个 ajax 调用,都在$(document).ready
函数内部。
(div
命名container
包含ul
在下面的 html 中)
$(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")'
});
};
});
因为这是一个 ASP MVC 3 站点,所以我在CheckSecurity
方法中设置了一个断点。我可以说这两个电话都没有工作,因为它从未被解雇过。
控制器方法如下
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();
}
这应该是检查用户的安全级别,将boolean
值放在ViewBag中,然后判断是否显示Admin Features
下面的下拉项
<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>
当页面尝试加载时,它会崩溃,并出现指向以下@if (ViewBag.Admin)
行的错误:
Cannot convert null to 'bool' because it is a non-nullable value type
非常感谢任何帮助/建议。谢谢!