[asp.net-mvc-3] Richtiger Weg, um AJAX Post in jQuery zu verwenden, um das Modell von der stark typisierten MVC3-Ansicht zu übergeben


Answers

Ich habe 3 Möglichkeiten gefunden, dies zu implementieren:

C # -Klasse:

public class AddressInfo {
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
    public string Country { get; set; }
}

Aktion:

[HttpPost]
public ActionResult Check(AddressInfo addressInfo)
{
    return Json(new { success = true });
}

JavaScript können Sie es auf drei Arten tun:

1) Abfragezeichenfolge:

$.ajax({
    url: '/en/Home/Check',
    data: $('#form').serialize(),
    type: 'POST',
});

Daten hier ist eine Zeichenfolge.

"Address1=blah&Address2=blah&City=blah&State=blah&ZipCode=blah&Country=blah"

2) Objekt-Array:

$.ajax({
    url: '/en/Home/Check',
    data: $('#form').serializeArray(),
    type: 'POST',
});

Daten sind hier ein Array von Schlüssel / Wert-Paaren:

=[{name: 'Address1', value: 'blah'}, {name: 'Address2', value: 'blah'}, {name: 'City', value: 'blah'}, {name: 'State', value: 'blah'}, {name: 'ZipCode', value: 'blah'}, {name: 'Country', value: 'blah'}]

3) JSON:

$.ajax({
      url: '/en/Home/Check',
      data: JSON.stringify({ addressInfo:{//missing brackets
          Address1: $('#address1').val(),
          Address2: $('#address2').val(),
          City: $('#City').val(),
          State: $('#State').val(),
          ZipCode: $('#ZipCode').val()}}),
      type: 'POST',
      contentType: 'application/json; charset=utf-8'
});

Daten sind hier eine serialisierte JSON-Zeichenfolge. Beachten Sie, dass der Name mit dem Parameternamen im Server übereinstimmen muss !!

='{"addressInfo":{"Address1":"blah","Address2":"blah","City":"blah","State":"blah", "ZipCode", "blah", "Country", "blah"}}'
Question

Ich bin ein Anfänger Web-Programmierer, also bitte vergib mir, wenn einige meiner "Fachsprache" nicht korrekt ist. Ich habe ein Projekt mit ASP.NET mit dem MVC3-Framework.

Ich arbeite an einer Admin-Ansicht, wo der Administrator eine Liste von Geräten ändern wird. Eine der Funktionen ist eine "update" -Schaltfläche, mit der ich jQuery verwenden möchte, um den Eintrag auf der Webseite nach dem Senden eines Beitrags an den MVC-Controller dynamisch zu bearbeiten.

Ich gehe davon aus, dass dieser Ansatz in einer einzelnen Admin-Einstellung "sicher" ist, bei der es nur minimale Bedenken gibt, dass die Webseite mit der Datenbank nicht mehr synchron ist.

Ich habe eine stark typisierte Ansicht erstellt und hoffte, die Modelldaten mithilfe eines AJAX-Posts an die MVC-Steuerung zu übergeben.

Im folgenden Post habe ich etwas gefunden, das dem ähnelt, was ich gerade mache: JQuery Ajax und ASP.NET MVC3, die Nullparameter verursachen

Ich werde das Codebeispiel aus dem obigen Beitrag verwenden.

Modell:

public class AddressInfo 
{
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
    public string Country { get; set; }
}

Regler:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Check(AddressInfo addressInfo)
    {
        return Json(new { success = true });
    }
}

Skript in Ansicht:

<script type="text/javascript">
var ai = {
    Address1: "423 Judy Road",
    Address2: "1001",
    City: "New York",
    State: "NY",
    ZipCode: "10301",
    Country: "USA"
};

$.ajax({
    url: '/home/check',
    type: 'POST',
    data: JSON.stringify(ai),
    contentType: 'application/json; charset=utf-8',
    success: function (data.success) {
        alert(data);
    },
    error: function () {
        alert("error");
    }
});
</script>

Ich hatte noch keine Gelegenheit, das oben genannte zu verwenden. Aber ich fragte mich, ob dies die "beste" Methode war, die Modelldaten mit AJAX an die MVC-Steuerung zurückzugeben?

Sollte ich Bedenken haben, die Modellinformationen offen zu legen?







Links