gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:21:29 24 4
gpt4 key购买 nike

我正在做的事情的核心是,如果你去 www.mysite.com/admin/index 我想呈现一个显示“未经授权”的局部 View ,它附加了一个模型.我真的不希望该网站显示 www.mysite.com/error/unauthorized/因为当有人打电话告诉我我在“/error/unauthorized”页面上遇到错误时这不是很有用,而我真的想要它们说“我在/admin/index 页面上遇到未经授权的错误”。

除了重定向之外,我的 CustomAuthorizeAttribute 继承自 AuthorizeAttribute,工作正常。

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// returns boolean if it is good or not
}

然后我有我的 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;
}

我知道我可以删除 viewResult.Model 并只使用 ViewBag,但我真的希望有某种方法可以将模型传递给 Partial

最佳答案

PartialViewResult.Model是只获取并返回 ViewData.Model,您所要做的就是创建和设置 ViewData 属性:

var model = new ViewModels.Unauthorized() { MyData = "My Data" };
var viewResult = new PartialViewResult
{
ViewName = "~/Views/Shared/Unauthorized.cshtml",
ViewData = new ViewDataDictionary(model)
};
context.Result = viewResult;

关于c# - 如何从自定义 AuthorizeAttribute 返回带有模型的 PartialView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com