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'');