recorrer objeto mostrar leer externo ejemplos ejemplo datos crear convertir con c#-4.0 jquery asp.net-mvc-4 asp.net-web-api

c# 4.0 - mostrar - Envío de objeto JSON a la API web



recorrer objeto json javascript (4)

Cambio:

data: JSON.stringify({ model: source })

A:

data: {model: JSON.stringify(source)}

Y en tu controlador haces esto:

public void PartSourceAPI(string model) { System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); var result = js.Deserialize<PartSourceModel>(model); }

Si la URL que utiliza en jquery es /api/PartSourceAPI , el nombre del controlador debe ser api y la acción (método) debe ser PartSourceAPI

Estoy intentando descubrir cómo puedo enviar información de un formulario a una acción de API web. Este es el jQuery / AJAX que trato de usar:

var source = { ''ID'': 0, ''ProductID'': $(''#ID'').val(), ''PartNumber'': $(''#part-number'').val(), ''VendorID'': $(''#Vendors'').val() } $.ajax({ type: "POST", dataType: "json", url: "/api/PartSourceAPI/", data: JSON.stringify({ model: source }), success: function (data) { alert(''success''); }, error: function (error) { jsonValue = jQuery.parseJSON(error.responseText); jError(''An error has occurred while saving the new part source: '' + jsonValue, { TimeShown: 3000 }); } });

Aquí está mi modelo

public class PartSourceModel { public int ID { get; set; } public int ProductID { get; set; } public int VendorID { get; set; } public string PartNumber { get; set; } }

Aquí está mi vista

<div id="part-sources"> @foreach (SmallHorse.ProductSource source in Model.Sources) { @source.ItemNumber <br /> } </div> <label>Part Number</label> <input type="text" id="part-number" name="part-number" /> <input type="submit" id="save-source" name="save-source" value="Add" />

Aquí está mi acción de controlador

// POST api/partsourceapi public void Post(PartSourceModel model) { // currently no values are being passed into model param }

¿Qué me estoy perdiendo? ahora cuando depuro y paso por esto cuando la solicitud de ajax golpea la acción del controlador, no pasa nada al parametro del modelo.


Creo que necesitas cotizaciones alrededor del model :

JSON.stringify({ "model": source })


Prueba esto:

jquery

$(''#save-source'').click(function (e) { e.preventDefault(); var source = { ''ID'': 0, //''ProductID'': $(''#ID'').val(), ''PartNumber'': $(''#part-number'').val(), //''VendorID'': $(''#Vendors'').val() } $.ajax({ type: "POST", dataType: "json", url: "/api/PartSourceAPI", data: source, success: function (data) { alert(data); }, error: function (error) { jsonValue = jQuery.parseJSON(error.responseText); //jError(''An error has occurred while saving the new part source: '' + jsonValue, { TimeShown: 3000 }); } }); });

Controlador

public string Post(PartSourceModel model) { return model.PartNumber; }

Ver

<label>Part Number</label> <input type="text" id="part-number" name="part-number" /> <input type="submit" id="save-source" name="save-source" value="Add" />

Ahora cuando haga clic en " Add " después de completar el cuadro de texto, el controller escupirá nuevamente lo que escribió en el cuadro PartNumber en una alerta.


var model = JSON.stringify({ ''ID'': 0, ''ProductID'': $(''#ID'').val(), ''PartNumber'': $(''#part-number'').val(), ''VendorID'': $(''#Vendors'').val() }) $.ajax({ type: "POST", dataType: "json", contentType: "application/json", url: "/api/PartSourceAPI/", data: model, success: function (data) { alert(''success''); }, error: function (error) { jsonValue = jQuery.parseJSON(error.responseText); jError(''An error has occurred while saving the new part source: '' + jsonValue, { TimeShown: 3000 }); } }); var model = JSON.stringify({ ''ID'': 0, ...'': 5, ''PartNumber'': 6, ''VendorID'': 7 }) // output is "{"ID":0,"ProductID":5,"PartNumber":6,"VendorID":7}"

sus datos son algo así como "{" modelo ":" ID ": 0," ProductID ": 6," PartNumber ": 7," VendorID ": 8}}" controlador web api no puede vincularlo a su modelo