ASP.NET Web API - 如何传递未知数量的表单编码的POST值

时间:2018-01-12 06:31:00

标签: asp.net-web-api

我的应用程序的前端可以在表单中发送未知数量的POST值。例如,在某些情况下,将有来自某些文本框的3个值,在某些情况下,将有6个值来自文本框,下拉列表等。后端是ASP.NET Web API。我知道可以使用FromURI属性在URI参数中将简单的.NET值传递给“POST Action”,并且可以在body中传递复杂类型,并在任何POST操作中使用FromBody属性获取。但在我的情况下,表单数据值的数量不会是常量而是可变的,我不能使用预定义的类来使用'FromBody'属性来保存值。

我该如何处理这种情况?

2 个答案:

答案 0 :(得分:2)

您可以使用System.Net.Http.Formatting命名空间中的FormDataCollection。

public class ApiFormsController : ApiController
{
    [HttpPost]
    public IHttpActionResult PostForm(FormDataCollection form)
    {
        NameValueCollection items = form.ReadAsNameValueCollection();
        foreach (string key in items.AllKeys)
        {
            string name = key;
            string val = items[key];
        }
        return Ok();
    }
}

答案 1 :(得分:0)

尝试将此属性作为属性列表发送。使模型像这样:

public class PostModel
{
    public IEnumerable<PropertyModel> Properties { get; set; }
}
public class PropertyModel
{
    public string Value { get; set; }
    public string Source { get; set; }
    // etc.
}

行动:

public IHttpActionResult Post(PostModel model)
{
    //Omited
     return Ok();
}