从一个 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方法中读出。这很有效,尽管它可能会让人不悦。希望对您有所帮助。
我有一个 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方法中读出。这很有效,尽管它可能会让人不悦。希望对您有所帮助。