Ich habe eine Ansicht mit mehreren Abschnitten. Ich möchte Abschnitte einzeln mit Teilansichten und Ajax aktualisieren.Übergeben Sie komplexe Objekte mit Ajax MVC
Ich habe dies so weit:
Controller:
[HttpPost]
public PartialViewResult userdetailssettings(UserDetails model)
{ .... }
anzeigen Html:
<div id="userDetailsPartial">
@Html.Partial("_user_details", Model.userdetails)
</div>
Teil Html:
<div class="form-group">
<div class="col-md-12">
@Html.TextBoxFor(x => x.Forename, new { @class = "form-control", placeholder = "Enter your forename" })
@Html.ValidationMessageFor(x => x.Forename)
</div>
</div>
<div class="form-group">
<div class="col-md-12">
@Html.TextBoxFor(x => x.Surname, new { @class = "form-control", placeholder = "Enter your surname" })
@Html.ValidationMessageFor(x => x.Surname)
</div>
</div>
Javascript in Ihrem Ausblick:
var detailsUrl = "@Url.Action("userdetailssettings", "UserLogin")";
var detailsmodel = JSON.stringify(@Html.Raw(Json.Encode(@Model.userdetails)));
$(document).on('click touchstart', '#saveDetails', function() {
$.ajax({
type: "POST",
dataType: 'json',
data: detailsmodel,
url: detailsUrl,
contentType: "application/json"
}).done(function (res) {
$("#userDetailsPartial").html(res);
addresssearch();
});
});
Das Modell wird vom Ajax an den Controller übergeben, die Werte entsprechen jedoch nicht denen der Eingänge. Sie sind die ursprünglichen Werte, die vom Controller übergeben wurden, um die Ansicht zu öffnen.
Ich habe versucht, die partielle in Tags zu wickeln und auch versucht, Formular-Tags innerhalb der partiellen hinzuzufügen.
ich auch diesen Code setzen versucht haben:
var detailsUrl = "@Url.Action("userdetailssettings", "UserLogin")";
var detailsmodel = JSON.stringify(@Html.Raw(Json.Encode(@Model.userdetails)));
Innerhalb der Klick-Funktion.
Nichts, was ich tue, übergibt die aktualisierten Werte von den Eingängen.
Ich habe gedacht, eine neue Instanz des Modells aus den Eingaben in dem Javascript heißt
var detailsmodel = [ { Forename: $('#Forename').val(), Surname: $('#Surname').val() } ];
Schaffung Aber wenn ich nur json zu schaffen bin, warum kann ich nicht nur das gebundene Modell zu json konvertieren.
* "Warum kann ich das gebundene Modell nicht einfach in json konvertieren" * - weil Sie MVC verwenden, nicht MVVM. Ihr "gebundenes Modell" ist ein Weg vom Controller zur Ansicht über das Modell. Sie mischen den Begriff "gebundenes Modell" mit "Modell" und "Bindung". Wenn Sie das Formular POST senden, erhalten Sie das Modell, aber wenn Sie über Ajax übergeben, müssen Sie die aktuellen Werte aus dem Formular abrufen (wie in Ihrem Kommentar 'Erstellen einer neuen Instanz des Modells aus den Eingaben). Ihr 'var detailsmodel = JSON.stringify ...' wird gesetzt, wenn die Ansicht generiert wird und sich nicht ändert. –
Vielen Dank für die Erklärung. Ich werde verschlingen, um die neue Instanz des Modells zu erstellen. Wenn Sie Ihren Kommentar zu einer Antwort machen, werde ich akzeptieren. Danke noch einmal. –