我有一个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();
}
答案 0 :(得分:0)
据我所知,你不能发布到另一个方法并传递值。
你可以通过将第一篇文章中的数据写入'TempData'来解决这个问题,
return RedirectToAction('MethodNameHere');
并在第二篇文章中读出来。这很好用,虽然它可能会令人不悦。希望有所帮助。