Jquery 获取外部javascript文件中的tempdata/session/viewbag值
我定义了一个自定义authorized属性,在该属性中,当用户未经授权时,我将tempdata[“unauthorized”]=true。我试图在cshtml视图中引用的外部javascript文件中访问该值,但我无法获取该值,它会出错 下面是定制授权件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 =
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");
}