问题
I'm trying to build a custom action filter which grabs the incoming model out of the filter context, adds it to tempdata, then does "other stuff".
My action method looks like this:
[HttpPost]
[MyCustomAttribute]
public ActionResult Create(MyViewModel model)
{
// snip for brevity...
}
Now, i want to add the model
to TempData
, after the model-binding has kicked in and transformed the form value collection into MyViewModel
.
How do i do that?
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.Controller.ViewData.ModelState.IsValid)
return;
var model = filterContext.????; // how do i get the model-bounded object?
filterContext.TempData.Add(someKey, model);
}
回答1:
Got it - hopefully this is the correct way of doing it:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.Controller.ViewData.ModelState.IsValid)
return;
var model = filterContext.ActionParameters.SingleOrDefault(ap => ap.Key == "model").Value;
if (model != null)
{
// Found the model - add it to tempdata
filterContext.Controller.TempData.Add(TempDataKey, model);
}
}
来源:https://stackoverflow.com/questions/5616653/asp-net-mvc-3-custom-action-filter-how-to-add-incoming-model-to-tempdata