2016-07-20 10 views
1

Ich arbeite mit MVC5. Ich benutze ein Widget, das ein Bild in die Cloud hochlädt und das Ereignis anruft. Bei Erfolg muss ich einige Informationen in die Datenbank schreiben. Die Daten in der ersten Codezeile.Wie bekomme ich POST-Daten von Anfrage asp mvc 5

$(document).on('cloudinarywidgetsuccess', function (e, data /*this data I need in database*/) { 
    $.ajax({ 
     url: "/Cabinet/UploadImageCallback", 
     type: "POST", 
     data: data, 
     success: function (data) { 
      if (data.status == "success") { 
       console.log(data); 
      } else { 
       console.log("db error"); 
       console.log(data); 
      } 
     }, 
     error: function (data) { 
      console.log("An error has occured!!!"); 
      console.log(data); 
     } 
    }); 
}); 

Ich möchte Daten im Controller im JSON-Format erhalten. Wenn ich auf diese Weise nach .php sende, kann ich auf diese Weise auf Daten zugreifen $_POST['KEY']. Wie bekomme ich die ähnliche Funktionalität in MVC5?

+0

Wie sieht 'data' aus? – Shyju

+0

@Shyju json array – Nikita

+1

welche struktur? Erstellen Sie eine Klasse mit derselben Struktur und verwenden Sie diese als Ihren Parameter. Wenn die Daten gepostet werden, wird der Modellbinder die gebuchten Daten einem Objekt dieser Klasse zuordnen und Sie können darauf zugreifen. – Shyju

Antwort

1

Sie können einfach ein Modell als Parameter verwenden; Meistens kann der Default ModelBinder von ASP.Net MVC Ihrem Modell zugeordnet werden.

$.ajax({ 
    url: "@Url.Action("UploadImageCallback", "Cabinet")", // If you want strongly-typed URL 
    contentType: "application/json; charset=utf-8", 
    method: "POST", 
    data: JSON.stringify(data) 
    ... 
}); 

public class CustomerModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

[HttpPost] 
public ActionResult UploadImageCallback(CustomerModel model) 
{ 
    // Do something 
} 
+0

Ich habe über Modellbinder gelesen. Wenn Sie also einige Felder benötigen, können Sie einfach die nächste in Aktion schreiben: 'public ActionResult UploadImageCallback (string field1, string field3)'. Der Modellbinder sucht automatisch nach json-Variablen mit dem gleichen Namen wie die Parameter der Aktion in den verfügbaren Datenquellen (POST, GET, SESSION - spielt keine Rolle). Derselbe Name ist der erste, der zweite Binder versucht, den Zeichenfolgenwert in den Parametertyp zu konvertieren. Wenn beide Bedingungen erfüllt sind, sendet der Binder den Wert an die Aktion. – Nikita