ASP.NET Web API se ha vuelto significativamente más robusto en el tratamiento de diferentes escenarios HTTP, especialmente la transmisión. Como tal, solo los formateadores de tipo de medios normalmente tocan el contenido y tienen que hacer una coherencia del contenido.
En ASP.NET MVC, application/x-www-form-urlencoded
tipo de contenido es un ciudadano de primera clase (y se trata sobre todo porque este es el tipo de contenido del 95% de las peticiones POST) y tenemos la FormsCollection
para proporcionar acceso diccionario en el acceso, siempre que se define como un parámetro de entrada.
En ASP.NET Web API, application/x-www-form-urlencoded
es otro tipo de contenido, y se supone que debe leerlo MediaTypeFormatter. Como tal ASP.NET Web API no puede hacer ninguna suposición sobre el Forms
.
El enfoque normal en ASP.NET Web API es representar el formulario como modelo para que el formateador del tipo de medio lo deserialice. Alternativa es definir los parámetros de las acciones como NameValueCollection
:
public void Post(NameValueCollection formData)
{
var value = formData["key"];
}
Supongamos que tenemos algunos valores que eran conocidos, y algunos que son dinámicos. ¿Hay alguna manera de especificar un tipo de modelo para los conocidos? Y obtener el resto en la colección. Algo así como: 'public void Post (modelo PostData, NameValueCollection formData)'? –
El uso de NameValueCollection no funcionó para mí, pero funcionó con FormDataCollection – Pyfhon
NameValueCollection no funcionó para mí también. Usé FormDataCollection como @Pyfhon. – avidProgrammer