首页 > 解决方案 > 如何在视图结果对象中传递消息?

问题描述

授权失败后,我将用户重定向回登录页面,这可行,但我也想传递一条消息。

我正在扩展 AuthorizeAttribute 类并覆盖一个方法。

public class CustomAuthorize: AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            filterContext.Result = new ViewResult { ViewName = "~/Views/Login/Login.cshtml" };           
        }
    }

然后在我想授予对授权角色的访问权限的地方使用 CustomeAuthorize。

我尝试传递消息但不起作用。

标签: c#asp.netasp.net-mvcrazor

解决方案


试试这个ViewBag

filterContext.Result = new ViewResult { ViewName = "~/Views/Login/Login.cshtml" };     
ViewBag.ErrorMsg = "Not authorized";

在重定向视图中,调用以下命令:

@ViewBag.ErrorMsg;

或者您可以创建一个模型来呈现该错误消息,如下所示:

public class Render {
    public string Msg { get; set;}
}

在控制器中:

aRender.Msg = "Not authorized"; //aRender is an object here

同样在视图中调用它:

@model YourProjectNameSpace.YourModel

 @Model.Msg;

推荐阅读