从Controller过滤数据并将其传递给视图

时间:2014-05-27 06:05:57

标签: c# asp.net-mvc-4

我有一个小场景:

我从数据库中获取数据,我想在ActionExecuted Filter中过滤它,然后将其发送到View。我在我的过滤器中使用TempData访问数据库中提取的数据。修改过滤器内的数据后,我想将其发送到View。 有什么可能的解决方案?

1 个答案:

答案 0 :(得分:1)

当您修改自定义过滤器的TempDataOnActionExecuted方法时,视图会按设计获得修改后的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提取的修改数据。

以下是一些article explaining action filters feature