2014-06-25 24 views

cevap

51

Sen kullanarak bu

public class SomeMsgAttribute : FilterAttribute, IResultFilter 
{ 
     public void OnResultExecuted(ResultExecutedContext filterContext) 
     { 
     } 

     public void OnResultExecuting(ResultExecutingContext filterContext) 
     { 
      filterContext.Controller.ViewBag.Msg= "Hello"; 
     } 
} 

gibi yapabilirsiniz:

[SomeMsg] 
public ActionResult Index() 
{ 
    return View(); 
} 
+0

Bunun neden "Yürütme" aşamasında değil, "Yürütülüyor" da çalıştığı hakkında herhangi bir açıklama var mı? –

+2

@TolgaEvcimen 'OnResultExecuted', tıraş makinesi görünümü oluşturulduktan sonra çağrılır. O zaman, çıkışı değiştirmek için çok geç. – DPac

+0

Gördüğüm gibi, her zaman, 'OnResultExecuted' eylemi döndükten hemen sonra çağrılan, acıma :) diye düşünmüştüm. Bunu düşünmeliydim :) Teşekkürler. –

7

farklı bir kontrolör eylem veri aktarmak için bu

public class CustomFilterAttribute : ActionFilterAttribute 
{ 
    public override void 
    OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // get the view bag 

     var viewBag = filterContext.Controller.ViewBag; 

     // set the viewbag values 
     viewBag.CustomValue = "CustomValue"; 
    } 
} 
0

deneyin

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    EmployeeTrackingSystemAndMISEntities db = new EmployeeTrackingSystemAndMISEntities(); 

    var UserCookie = filterContext.HttpContext.Request.Cookies["UserUniqueID"]; 


    RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary(); 
    redirectTargetDictionary.Add("action", "UserLogIn"); 
    redirectTargetDictionary.Add("controller", "Login"); 

    var TempData = filterContext.Controller.TempData; 
    TempData["Status"] = "Please log in as Admin"; 

    filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary); 

} 
İlgili konular