Asp.net web api ASP.NET Web API-如何传递未知数量的表单编码的POST值
我的应用程序的前端可以在表单中发送未知数量的POST值。例如,在某些情况下,将有3个值来自某些文本框,在某些情况下,将有6个值来自文本框、下拉列表等。后端是ASP.NET Web API。我知道,在任何POST操作中,可以使用FromURI属性在URI参数中向“POST操作”传递一个简单的.NET值,并使用FromBody属性在body中传递和获取一个复杂类型。但是在我的例子中,表单数据值的数量不是常数而是可变的,我不能使用预定义的类来保存使用“FromBody”属性的值Asp.net web api ASP.NET Web API-如何传递未知数量的表单编码的POST值,asp.net-web-api,Asp.net Web Api,我的应用程序的前端可以在表单中发送未知数量的POST值。例如,在某些情况下,将有3个值来自某些文本框,在某些情况下,将有6个值来自文本框、下拉列表等。后端是ASP.NET Web API。我知道,在任何POST操作中,可以使用FromURI属性在URI参数中向“POST操作”传递一个简单的.NET值,并使用FromBody属性在body中传递和获取一个复杂类型。但是在我的例子中,表单数据值的数量不是常数而是可变的,我不能使用预定义的类来保存使用“FromBody”属性的值 如何处理这种情况?尝试
如何处理这种情况?尝试将此属性作为属性列表发送。使模型如下所示:
public class PostModel
{
public IEnumerable<PropertyModel> Properties { get; set; }
}
public class PropertyModel
{
public string Value { get; set; }
public string Source { get; set; }
// etc.
}
您可以使用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();
}
}
值的数量是完全随机的吗?还是有一些规则必须遵守?例如:有6个文本框,都有固定的名称和类型,但请求可以发送其中的2个,或者全部6个?完全随机。我想在控制器中的POST操作中捕获提交的表单数据(例如Val1、Val2、Val5)。
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();
}
}