从一个ActionResult发布到另一个

时间:2015-02-02 21:02:45

标签: http model-view-controller

我有一个ActionResult方法,它接受来自外部表单的帖子。表单发送方只能根据其参数调用遵循其命名约定,并且我的应用程序只能遵循另一个命名约定。因此,我需要创建一个接受帖子的桥梁,并发送另一个帖子。我遇到的问题是,只有原始帖子中的参数显示在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();
    }

1 个答案:

答案 0 :(得分:0)

据我所知,你不能发布到另一个方法并传递值。

可以通过将第一篇文章中的数据写入'TempData'来解决这个问题,

return RedirectToAction('MethodNameHere');

并在第二篇文章中读出来。这很好用,虽然它可能会令人不悦。希望有所帮助。