我有一个自定义的AuthorizeAttribute,其中当用户未经授权时,我正在设置一个tempdata [" UnAuthorized"] = true。我试图在cshtml视图中引用的外部javascript文件中访问此值,但我无法获取值,它会出错 以下是自定义授权部分
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult("/");
base.HandleUnauthorizedRequest(filterContext);
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
//if not logged, it will work as normal Authorize and redirect to the Login
base.HandleUnauthorizedRequest(filterContext);
}
else
{
filterContext.Controller.TempData ["UnAuthorized"] = true;
filterContext.Result = new RedirectResult("/Error");
}
}
这就是我尝试在外部.js文件中访问它的方式
function SetData(data) {
var test = TempData["UnAuthorized"];
if (!test)
{
$('#SetModal').html(data);
$('#SetModal').dialog('open');
}
}
我无法检索存储在TempData中的值。请建议。我使用的是asp.net mvc 5,jquery,C#
答案 0 :(得分:6)
在剃刀视图中放入另一个脚本,将值存储在javascript变量中,然后您可以使用外部文件中的值。
剃刀:
@section scripts {
<script type="text/javascript">
var unauthorized = '@TempData["UnAuthorized"]';
</script>
<script type="text/javascript" src="~/Content/Scripts/external.js">
}
External.js
if(unauthorized) {
alert("unauthorized");
}