3

我試圖建立一個自定義的動作過濾器,抓取過濾器上下文的傳入模型,將其添加到tempdata,然後做「其他的東西」。ASP.NET MVC 3自定義動作過濾器 - 如何將傳入模型添加到TempData?

我的操作方法是這樣的:

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

現在,我想modelTempData模型結合已經踢並轉化形式收藏價值爲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); 
} 
+0

請注意,在會話中的TempData商店的東西.. – 2011-05-30 23:26:12

回答

5

明白了 - 希望這是做它的正確方法:

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); 
    } 
} 
相關問題