从Web Api控制器中的Post方法获取任何参数

时间:2014-12-03 15:38:53

标签: c# .net post asp.net-web-api asp.net-web-api2

我在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());

2 个答案:

答案 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>");



        }