小编Kyl*_*ree的帖子

如何从自定义AuthorizeAttribute返回带有模型的PartialView

在我要做的核心工作中,我想要的是如果您访问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

5
推荐指数
1
解决办法
1782
查看次数

使用类似数据解析.NET中的嵌套JSON

我有一个我正在调用的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)

.net c# json nested json.net

1
推荐指数
1
解决办法
135
查看次数