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