我在aspx中创建了一个旧页面,它获取每个Request.Form.Keys
并使用表单将POST发送到另一个页面(就像“HTTP POST REDIRECT”)
现在必须将此系统迁移到Web API(2.1),我必须模拟它。
这个技巧就是aspx获取任意/多个键和值,你可以向aspx发布任何东西。但我无法在web api中使用我的POST方法获得相同的结果,因为它期望对象不变(我不知道它并且我不在乎)
我不知道这是否有帮助,但旧aspx的代码就像这样:
sb.Append("<html>");
sb.AppendFormat("<body onload='document.forms[0].submit()'>Loading...");
sb.AppendFormat("<form action='{0}' method='post'>",
the-next-url);
foreach (string key in Request.Form.Keys)
{
sb.AppendFormat("<input type='hidden' name='{0}' value='{1}'>", key, Request.Form[key]);
}
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");
Response.Write(sb.ToString());
答案 0 :(得分:4)
最后,我只是在我的方法中使用:
HttpContext.Current.Request.Form
获取所有POST键和值而不是Request.Form
答案 1 :(得分:2)
我想你可以重构你的代码,使用类似的东西:
if (HttpContext.Current.Request.Form.Count > 0)
{
sb.Append("<html>");
sb.AppendFormat("<body onload='document.forms[0].submit()'>Loading...");
sb.AppendFormat("<form action='{0}' method='post'>",your_url);
foreach (string key in HttpContext.Current.Request.Form.AllKeys)
{
sb.AppendFormat("<input type='hidden' name='{0}' value='{1}'>", key,
HttpContext.Current.Request.Form[key]);
}
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");
}