액션 필터에서 리퍼러 액션을 삽입하는 방법이 있습니까? 액션 X에서 오는 뷰가 있다고합니다. 다이 뷰에서는 액션 Y를 호출하고 다시 액션 X로 리디렉션하려고합니다 (액션 X를 호출하는 X 액션이 여러 개 있습니다). 나는 그것이 매개 변수 호출 referrerAction과 이전 작업으로 채워진 작업 필터를 가지고 있다면 좋을 것이라고 생각했다. 가능한가?액션 필터를 통해 리퍼러 액션을 주입 하시겠습니까?
감사합니다. 여기
액션 필터에서 리퍼러 액션을 삽입하는 방법이 있습니까? 액션 X에서 오는 뷰가 있다고합니다. 다이 뷰에서는 액션 Y를 호출하고 다시 액션 X로 리디렉션하려고합니다 (액션 X를 호출하는 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);
}
}
을 지금, 당신은 당신이 [ReturnPoint]와 RedirectOrReturn()를 다시 반환 할 경우 전화로 행동하기 x 표시합니다.
UrlReferrer가 잘못되었거나 그 값을 제어 할 수 없어 UrlReferrer를 사용하지 않습니다. ReturnPoint를 사용하여 그룹을 만들 수도 있습니다 (예 : [ReturnPoint ("주문")] 및 RedirectOrReturn ("주문").
물론 OnActionExecuted에서 더 많은 자동 동작을 수행 할 수 있습니다. 반환 된 결과가 리디렉션인지 확인할 수 있으며 값이 있으면 자동으로 ReturnPoint로 이동합니다. 또는 [ReturnPoint (Automatic = true)]로 제어 할 수 있습니다.
[ReturnPoint] 속성을 사용하여 Y 동작을 표시하면 안됩니까? –
아니요, 그는 다시 X로 리디렉션하려고하므로 반환 지점이됩니다. 예를 들어, 카트가 반환 지점이면 기타 작업이 호출되지만 장바구니로 돌아가고 싶을 것입니다. 따라서 Cart/Index는 [ReturnPoint]로 표시됩니다. 그런 다음 Edit()가 RedirectOrReturn()을 호출합니다. – queen3