在外部javascript文件中获取tempdata / session / viewbag值

时间:2015-07-20 21:51:48

标签: jquery asp.net-mvc-5

我有一个自定义的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#

1 个答案:

答案 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");
}