有一种方法以将来自一个动作滤波器引荐作用? 比方说,我有一个来自行动X.在模具查看我叫动作Y的景色,我想再次重定向到行动X.(有调用动作Y多个X行动)。我认为这可能是很好,如果我有一个参数调用referrerAction以及与前一个动作充满它的行为过滤器。这可能吗?

感谢。

有帮助吗?

解决方案

下面是如何我做的:

  public class ReturnPointAttribute : Attribute
  {
  }

  public class BaseController: Controller
  {
      private string returnPointUrl = null;
      protected override void OnActionExecuted(ActionExecutedContext filterContext)
      {
         base.OnActionExecuted(filterContext);
         if (filterContext.ActionDescriptor.IsDefined(typeof(ReturnPointAttribute), true))
            returnPointUrl = filterContext.HttpContext.Request.Url.ToString();
      }
      public ActionResult RedirectOrReturn<T>(Expression<Action<T>> action) where T : BaseController
      {
         return returnPointUrl.IsNullOrEmpty() 
            ? MyControllerExtensions.RedirectToAction(this, action) 
            : (ActionResult)Redirect(returnPointUrl);
      }
   }

现在,你标记你X与[ReturnPoint]和调用RedirectOrReturn()如果你想返回回来。动作

我不使用UrlReferrer,因为它可能是错的,我有过它的价值无法控制。随着ReturnPoint,你也可以有团体,例如[ReturnPoint( “订单”)]和RedirectOrReturn( “订单”)。

例如 -

当然,你可以在OnActionExecuted有更多的自动行为它可以检查,如果返回的结果是重定向,并自动转至ReturnPoint如果它的价值。或者也可以与[ReturnPoint(自动=真)]控制该,等等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top