我使用MVC 3操作过滤器。
我的问题是,如果之前它传递给OnActionExecuting事件的ActionResult我各具特色的模式?
我需要改变的属性值的一个人也没有。
谢谢,
我使用MVC 3操作过滤器。
我的问题是,如果之前它传递给OnActionExecuting事件的ActionResult我各具特色的模式?
我需要改变的属性值的一个人也没有。
谢谢,
有一个在没有模型还OnActionExecuting
事件。 该模型由控制器操作返回。 所以,你有内部模型OnActionExecuted
事件。 这就是你可以改变的值。 例如,如果我们假设你的控制器操作返回的ViewResult,并通过在这里的一些模式是你如何可以检索这个模型和修改一些属性:
public class MyActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var result = filterContext.Result as ViewResultBase;
if (result == null)
{
// The controller action didn't return a view result
// => no need to continue any further
return;
}
var model = result.Model as MyViewModel;
if (model == null)
{
// there's no model or the model was not of the expected type
// => no need to continue any further
return;
}
// modify some property value
model.Foo = "bar";
}
}
如果你想修改的AS动作参数传递的视图模型的某些属性的值,那么我会建议在自定义模型粘合剂这样做。 但它也有可能实现的是,在OnActionExecuting
事件:
public class MyActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var model = filterContext.ActionParameters["model"] as MyViewModel;
if (model == null)
{
// The action didn't have an argument called "model" or this argument
// wasn't of the expected type => no need to continue any further
return;
}
// modify some property value
model.Foo = "bar";
}
}