从一个 ActionResult 发布到另一个

Posting from one ActionResult to another

我有一个 ActionResult 方法,它接受来自外部表单的 post。表单发送者只能在调用参数时遵守他们的命名约定,而我的应用程序只能遵守另一个命名约定。因此,我需要创建一个接受 post 并发送另一个 post 的桥。我遇到的问题是只有来自原始 post 的参数出现在 Request.Form 集合中。

明确一点:我正在寻找 TokenA 和 TokenB,但我仍然只看到 token_A 和 token_B。

这是我用来处理这个问题的方法。我不确定我的新 Http 请求是否正确,但应该知道我只是在使用 here.

列出的内容
    [HttpPost]
    public ActionResult FormPost()
    {
        string TokenA = string.Empty;
        string TokenB = string.Empty;

        TokenA = Request.Form["token_A"].ToString();
        TokenB = Request.Form["token_B"].ToString();

        System.Net.WebRequest webRequest = System.Net.WebRequest.Create("http://localhost:17159/Login/TokenAcceptor");
        webRequest.Method = "POST";
        webRequest.ContentType = "multipart/form-data;";
        var postData = "TokenB=" + TokenB + "&TokenA=" + TokenA;
        var data = Encoding.ASCII.GetBytes(postData);
        webRequest.ContentLength = data.Length;

        using (var stream = webRequest.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        System.Net.WebResponse response = webRequest.GetResponse();

        var sso = SsoFactory.Get(SsoType.FormPost);
        var ssoIdentity = sso.GetSsoIdentity();

        return TokenAcceptor();
    }

据我所知,您不能 post 到另一个方法并传递值。

可以通过将第一个post中的数据写入'TempData'然后

来解决这个问题

return RedirectToAction('MethodNameHere');

并在第二种post方法中读出。这很有效,尽管它可能会让人不悦。希望对您有所帮助。