这是我的类,它主要用于UnitForWork模式,即保存事务中的所有内容:
public class TestFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
if (filterContext.HttpContext == null)
throw new NullReferenceException("null");
else
{
ObjectContext objectContext = (ObjectContext)filterContext.HttpContext.Items
[ObjectContextManager.TestContext];
if (objectContext != null)
{
objectContext.SaveChanges();
}
}
}
}
这很好用。但是,我还想确保只有在我的action方法中ModelState.IsValid属性为true时才保存它。我怎么能这样做?
答案 0 :(得分:3)
filterContext.Controller
为您提供ControllerBase
而非Controller
的参考。如果你将它转换为Controller
,它将允许你访问ModelState
,这是控制器类的公共属性,如
var val = ((Controller)filterContext.Controller).ModelState.IsValid;
目前,我不知道这个演员有什么影响。使用前请先查询一下后果
的更新:强>
您还可以访问Modelstate属性,如
filterContext.Controller.ViewData.ModelState
并且它不涉及铸造