c# - ASP.NET MVC 3 自定义操作过滤器 - 如何将传入模型添加到 TempData?

标签 c# asp.net-mvc-3 model-binding tempdata custom-action-filter

我正在尝试构建一个自定义操作过滤器,该过滤器从过滤器上下文中获取传入模型,将其添加到临时数据,然后执行“其他操作”。

我的操作方法如下所示:

[HttpPost]
[MyCustomAttribute]
public ActionResult Create(MyViewModel model)
{
   // snip for brevity...
}

现在,我想将 model 添加到 TempData 模型绑定(bind)启动并将表单值集合转换为MyViewModel

我该怎么做?

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);
}

最佳答案

明白了 - 希望这是正确的做法:

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);
   }
}

关于c# - ASP.NET MVC 3 自定义操作过滤器 - 如何将传入模型添加到 TempData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616653/

相关文章:

c# - 如何将带有数据的字符串 [][] 转换为 IDataView 对象? (ML.NET)

c# - 如何避免 RCW 清理上的竞争

c# - 如何在数据网格初始化时将 WPF 数据网格的 SortDirection 设置为升序

asp.net-mvc-3 - 用作 Action 方法参数的 View Model 实例的构造函数注入(inject)

asp.net-mvc - ASP.NET MVC 模型绑定(bind)子对象

c# - IAsyncDisposable 有引用实现吗?

asp.net-mvc - MvcScaffolding - 它支持模型优先吗?

asp.net-mvc-3 - 使用内联 css 或 site.css 文件调整 editorfor box 的大小

model-view-controller - BindModel() 实现应该做什么?

c# - MVC4 webapi 中的反序列化/模型绑定(bind)不适用于数组