加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在RedirectToAction调用中传播QueryString参数

发布时间:2020-12-15 18:48:17 所属栏目:asp.Net 来源:网络整理
导读:我想确保QueryString中的一个特定参数,在我的情况下,request_id被传播到重定向的操作。 例如,我有一个行动第一, [HttpPost]public ActionResult First() { //////////////////// // Lots of code ... //////////////////// return RedirectToAction("Sec
我想确保QueryString中的一个特定参数,在我的情况下,request_id被传播到重定向的操作。

例如,我有一个行动第一,

[HttpPost]
public ActionResult First() 
{
    ////////////////////
    // Lots of code ...
    ////////////////////

    return RedirectToAction("Second");
}

现在说,第一个回发在QueryString中有一个参数,我想传递给第二个动作。一种方法是传递RedirectToAction调用本身的值,

string requestId = Request.QueryString[REQUEST_ID_KEY];
return RedirectToAction("Second",new { REQUEST_ID_KEY = requestId });

但是我必须在一系列操作中执行此操作,我不愿意在请求ID传播逻辑中加入。如果我可以将它包含在ActionFilter中,那将会更好,但是我无法弄清楚如何从ActionFilter向QueryString添加参数。有任何想法吗?

解决方法

public class PreserveQueryStringAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var redirectResult = filterContext.Result as RedirectToRouteResult;
        if (redirectResult == null)
        {
            return;
        }

        var query = filterContext.HttpContext.Request.QueryString;
        // Remark: here you could decide if you want to propagate all
        // query string values or a particular one. In my example I am
        // propagating all query string values that are not already part of
        // the route values
        foreach (string key in query.Keys)
        {
            if (!redirectResult.RouteValues.ContainsKey(key))
            {
                redirectResult.RouteValues.Add(key,query[key]);
            }
        }
    }
}

接着:

[HttpPost]
[PreserveQueryString]
public ActionResult First() 
{
    ////////////////////
    // Lots of code ...
    ////////////////////

    return RedirectToAction("Second");
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读