w3schools validar por peticiones parametros net mvc modelo formulario formdata enviar desde campos asp javascript c# ajax asp.net-mvc form-data

javascript - validar - Cómo agregar un conjunto completo de modelos a datos de formulario y obtenerlos en MVC



peticiones ajax desde asp net mvc (3)

En vista, si está utilizando ajax, entonces,

$(''#button_Id'').on(''click'', function(){ var Datas=JSON.stringify($(''form'').serialize()); $.ajax({ type: "POST", contentType: "application/x-www-form-urlencoded; charset=utf-8", url: ''@Url.Action("ActionName","ControllerName")'', data:Datas, cache: false, dataType: ''JSON'', async: true, success: function (data) { }, }); });

En el lado del controlador,

[HttpPost] public ActionResult ActionName(ModelName modelObj) { //Some code here }

¿Cómo paso un objeto modelo completo a través de formdata y lo convierto a tipo de modelo en el controlador?

¡A continuación se muestra lo que he probado!

Parte de JavaScript:

model = { EventFromDate: fromDate, EventToDate: toDate, ImageUrl: imgUrl, HotNewsDesc: $("#txthtDescription").val().trim(), }; formdata.append("model",model);

luego páselo a través de AJAX, será una cadena, y si verifico el valor de Request.Form["model"] el resultado será el mismo, es decir, se recibirá como cadena y el valor será "[object object]"

¿Hay alguna manera de pasar el modelo a través de formdata y recibirlo en el controlador?


Si desea enviar datos del formulario utilizando Ajax, esta es la forma de enviar

var formData = new FormData(); //File Upload var totalFiles = document.getElementById("Iupload").files.length; for (var i = 0; i < totalFiles; i++) { var file = document.getElementById("Iupload").files[i]; formData.append("Document", file); } formData.append("NameCode", $(''#SelecterID'').val()); formData.append("AirLineCode", $(''#SelecterID'').val()); $.ajax({ url: "/Controller/ActionName", type: "POST", dataType: "JSON", data: formData, contentType: false, processData: false, success: function (result) { } })


Si su vista se basa en un modelo y ha generado los controles dentro de las etiquetas <form> , puede serializar el modelo en FormData usando

var formdata = new FormData($(''form'').get(0));

Esto también incluirá cualquier archivo generado con <input type="file" name="myImage" .../>

y publicarlo de nuevo usando

$.ajax({ url: ''@Url.Action("YourActionName", "YourControllerName")'', type: ''POST'', data: formdata, processData: false, contentType: false, });

y en tu controlador

[HttpPost] public ActionResult YourActionName(YourModelType model) { }

o (si su modelo no incluye una propiedad para HttpPostedFileBase )

[HttpPost] public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage) { }

Si desea agregar información adicional que no está en el formulario, puede agregarla usando

formdata.append(''someProperty'', ''SomeValue'');