В основе того, что я делаю, я бы хотел, если вы перейдете на www.mysite.com/admin/index. Я хочу отобразить частичный вид, Несанкционированный ", к которому прикреплена Модель. Я действительно не хотел, чтобы сайт показывал www.mysite.com/error/unauthorized/, поскольку это не очень полезно, когда кто-то звонит и говорит мне, что я получил сообщение об ошибке на странице «/ error/unauthorized», когда я действительно хочу их сказать: «Я получил несанкционированную ошибку на странице/admin/index».Как вернуть PartialView с моделью из пользовательского AuthorizeAttribute
У меня есть свой атрибут 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, но я был действительно надеясь, что был какой-то способ, чтобы пройти в модели с частичным