在我要做的核心工作中,我想要的是如果您访问www.mysite.com/admin/index,我想呈现一个局部视图,该视图显示附加了模型的“未经授权”。我真的不希望该网站显示www.mysite.com/error/unauthorized/,因为当有人真的打电话给我并告诉我在“ / error / unauthorized”页面上出现错误时,这不是很有用说“我在/ admin / index页上遇到未经授权的错误”。
我有从AuthorizeAttribute继承的CustomAuthorizeAttribute,工作正常,除了重定向之外。
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// returns boolean if it is good or not
}
Run Code Online (Sandbox Code Playgroud)
然后,我有了HandleUnauthorizedRequest,这是我需要传递部分模型的地方:
if (context.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
base.HandleUnauthorizedRequest(context);
}
else
{
var viewResult = new PartialViewResult();
viewResult.ViewName = "~/Views/Shared/Unauthorized.cshtml";
viewResult.Model = new ViewModels.Unauthorized() { MyData = "My Data" }; // obviously can't do this as it is read-only
context.Result = viewResult;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以删除viewResult.Model并只使用ViewBag,但我真的希望有某种方法可以将模型传递给Partial
c# authorize-attribute asp.net-mvc-partialview asp.net-mvc-5
我有一个我正在调用的API返回一组JSON.这个特别是给我一套项目.这些项目可以有多个子项目.所有子项目的结构都是相同的,因为它是主要项目.我似乎找不到任何能告诉我如何解析JSON的内容,以便它在.NET中为我提供某种可用的类,以便我可以在我的网页上显示它.
这是结构(缩小,因为原始是巨大的,并重命名项目和数字,以使其更容易阅读):
{
"data": [
{
"id": 70000,
"name": "Project 70000",
"children": [
{
"id": 71000,
"name": "Project 71000",
"children": [
{
"id": 71100,
"name": "Project 71100",
"children": [
{
"id": 71110,
"name": "Project 71110",
"children": [
{
"id": 71111,
"name": "Project 71111"
},
{
"id": 71112,
"name": "Project 71112"
}
]
}
]
}
]
}
]
},
{
"id": 80000,
"name": "Project 80000",
"children": [
{
"id": 81000,
"name": "Project 81000"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我认为我希望我的班级看起来像(我可能在这里错了)是这样的:
public …Run Code Online (Sandbox Code Playgroud)