ich diesen Code einreichen,Kann nicht Formulardaten und hochgeladene Datei in Controller binden
$('#form').on('submit',function (e) {
e.preventDefault();
//var file = $("#productImg");
var fileUpload = $("#productImg").get(0);
var files = fileUpload.files;
var form = $("#form");
var formData = new FormData();
formData.append("product", form.serialize());
// Looping over all files and add it to FormData object
for (var i = 0; i < files.length; i++) {
formData.append(files[i].name, files[i]);
}
//formData.append("file", file);
$.ajax({
type: 'POST',
url: baseUrl + 'Controller/Action',
data: formData,
processData: false,
contentType: false,
success: function (data) {
}
});
});
Dies ist mein Controller:
public JsonResult AddProduct(ProductModel product) // data is binded in the model if I remove content type property
{
var isSuccess = false;
if (product != null)
{
try
{
if (Request.Files.Count > 0) // works ok if I added the content type property
{
var sadas = "sad";
}
Was geschieht hier ich die serialized form
Daten in Mvc Controller sendet zusammen mit der hochgeladenen Datei.
Das Problem hier ist, wenn ich diese Ajax-Eigenschaft contentType: false,
hinzugefügt habe, kann ich die Dateien erfolgreich postback, aber das binded-Modell ist null.
Auf der anderen Seite, wenn ich diese Eigenschaft entfernen, funktioniert das binded-Modell OK. Aber das Problem ist, dass die Datei nicht auf dem Server gesendet wurde.
Wie kann ich das schaffen? Ich möchte, dass sowohl das Formular als auch die Bilder serverseitig gesendet werden.
UPDATE Dies funktioniert nun, die einzige Linie änderte ich ist diese
formData.append("product", form.serialize());
TO
var other_data = $('#addProductForm').serializeArray(); $.each(other_data, function (key, input) { formData.append(input.name, input.value); });
Kann mir jemand erklären, was passiert ist? Ich habe keine Ahnung
Unter der Annahme, dass die Fil-Eingaben auch in Ihren Form-Tags sind, brauchen Sie nur 'var formData = new FormData ($ ("# form"). Get (0)); '- siehe [diese Antwort] (http: // stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681) –
@StephenMuecke danke! Dies kann meinen Code vereinfachen – Sherlock