通过行为过滤注入引荐行动?
-
21-09-2019 - |
题
有一种方法以将来自一个动作滤波器引荐作用? 比方说,我有一个来自行动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(自动=真)]控制该,等等。
不隶属于 StackOverflow