从控制器过滤数据并将其传递给视图

本文关键字:视图 控制器 过滤 数据 | 更新日期: 2023-09-27 18:05:12

我有一个小场景:

我从数据库中获取数据,我想在我的ActionExecuted过滤器中过滤它,然后将其发送到视图。我正在访问从数据库中获取的数据使用TempData,在我的过滤器。在我修改了Filter中的数据之后,我想把它发送给View。

从控制器过滤数据并将其传递给视图

当您在自定义过滤器的OnActionExecuted方法中修改TempData时,视图将通过设计获得修改的TempData

的例子:过滤器:

public class MyFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.Controller.TempData["key"] += "modified";
    }
}

控制器:

[MyFilter]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        TempData["key"] = "some_value";
        return View();
    }
}

视图(Index.cshtml):

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
</head>
<body>
    <div>
        @TempData["key"]
    </div>
</body>
</html>

当您运行此操作时,您将看到Index页面显示从TempData中提取的修改数据。

这里有一些解释动作过滤器特性的文章