Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 获取外部javascript文件中的tempdata/session/viewbag值_Jquery_Asp.net Mvc 5 - Fatal编程技术网

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

Jquery 获取外部javascript文件中的tempdata/session/viewbag值,jquery,asp.net-mvc-5,Jquery,Asp.net Mvc 5,我定义了一个自定义authorized属性,在该属性中,当用户未经授权时,我将tempdata[“unauthorized”]=true。我试图在cshtml视图中引用的外部javascript文件中访问该值,但我无法获取该值,它会出错 下面是定制授权件 protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { filterContext.Result =

我定义了一个自定义authorized属性,在该属性中,当用户未经授权时,我将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#

在razor视图中放置另一个脚本,将值存储在javascript变量中,然后您可以在外部文件中使用该值

剃刀:

@section scripts {
    <script type="text/javascript">
        var unauthorized = '@TempData["UnAuthorized"]';
    </script>
    <script type="text/javascript" src="~/Content/Scripts/external.js">
}

它应该是var test='@TempData[“UnAuthorized”];我尝试了这个,它只是将“@TempData[“UnAuthorized”]”显示为字符串,但仍然没有显示值。它显示带有“/”@TempData[\“UnAuthorized\”]”的字符串。您是否在外部js文件中使用该字符串?如果是,请在.cshtml文件中尝试。是的,我使用的是外部js文件,那么您将无法访问C#代码。您可以在.cshtml页面的hiddenField中添加TempData的值,并在外部js文件中使用它的值。e、 g.
并在外部js文件中访问它,如下所示
var test=$('hiddError').val()我有master.cshtml,它引用master.js。cshtml有一个自定义的上下文菜单,当单击时会发布一个ajax请求,该请求调用一个具有customauthorize属性的控制器/操作方法。由于用户未经授权,customauthorize属性重定向到unauthorized.cshtml,我将脚本代码置于unauthorized=“@Tempdata['unauthorized']”中。在这个cshtml中也是相同的master.js文件。SetData代码在master.js中,var unauthorized=未定义。流为master.cshtml-->customattribute--由于用户没有权限-->unauthorized.cshtml-->master.js,因此无法进行atuhroize
if(unauthorized) {
    alert("unauthorized");
}