C# 在操作筛选器中获取PartialView结果
我编写了一个类似于日志函数的操作过滤器:C# 在操作筛选器中获取PartialView结果,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我编写了一个类似于日志函数的操作过滤器: public class TrackActionFilterAttribute : ActionFilterAttribute, IActionFilter { public override void OnActionExecuting(ActionExecutingContext filterContext) { Tracking track = new Tracking() { Action =
public class TrackActionFilterAttribute : ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Tracking track = new Tracking()
{
Action = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName + filterContext.ActionDescriptor.ActionName
};
context.Trackings.Add(track);
context.SaveChanges();
}
}
我有这样的行动方法:
[TrackActionFilter]
public ActionResult Index()
{
if (Request.Form["registered"] == 1)
return PartialView("Landing");
else
return PartialView("Register");
}
[TrackActionFilter]
public ActionResult Landing()
{
return PartialView();
}
[TrackActionFilter]
public ActionResult Register()
{
return PartialView();
}
我的问题是,当调用索引操作时,我只是将索引操作注册到数据库中。由于导航到索引将导致登录或注册部分视图,因此在任何类型的操作筛选器中都可以获取这些操作吗
主要原因是我也想在数据库中跟踪这些操作,但我似乎无法做到这一点。我试过ActionExecuted,ResultExecuted都没用。如果有专家能帮忙,我会很高兴的 您的操作筛选器中有访问请求参数:
filterContext.HttpContext.Request["registered"]
如果您想知道返回了哪个部分视图,则必须使用OnActionExecuted
事件,因为此事件在控制器操作完成后运行:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var viewResult = filterContext.Result as ViewResultBase;
if (viewResult != null)
{
// the controller action returned either a View or a partialView
// => we could get its name:
var name = viewResult.ViewName;
}
...
}