Ich dachte, es wäre eine gute Idee und versuchen, ein Bearbeitungsformular zu implementieren, das von der Stelle in der Tabelle mit den Daten, die Sie bearbeiten möchten, stattfindet. Ich war nicht in der Lage, mein Formular zu übermitteln, während das Erstellungsformular gleich funktioniert und ordnungsgemäß funktioniert. Hier ist der Code, mit dem ich Hilfe benötige. Dies ist die Teilansicht des Bearbeitungsformulars.Ich kann kein Bearbeitungsformular senden
@using (Html.BeginForm("", "", FormMethod.Post, new { id = "PublisherEditForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.PublisherID)
@*@Html.LabelFor(model => model.PublisherName, htmlAttributes: new { @class = "control-label col-md-2" })*@
<td>
@Html.EditorFor(model => model.PublisherName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.PublisherName, "", new { @class = "text-danger" })
</td>
@*@Html.LabelFor(model => model.City, htmlAttributes: new { @class = "control-label col-md-2" })*@
<td>
@Html.EditorFor(model => model.City, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger" })
</td>
@*@Html.LabelFor(model => model.State, htmlAttributes: new { @class = "control-label col-md-2" })*@
<td>
@Html.EditorFor(model => model.State, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" })
</td>
<td>
<input id="saveUpdate" type="submit" value="Update Publisher" class="btn btn-primary" />
</td>
}
Hier ist die Ajax, dass ich die Form, um zu versuchen bin mit und senden:
$('#PublisherEditForm').submit(function (e) {
var formData = $(this).serializeArray();
e.preventDefault();
$('MessageContent').
html("<div class='alert alert-info'>Please Wait...</div>");
$.ajax({
url: "@Url.Action("AjaxEdit", "PublishersEF")",
type: "POST",
data: formData,
dataType: "json",
success: function (data) {
$('#MessageContent').html("<div class='alert alert-success'>Your record was updated!</div>");
$('#PublisherEditForm')[0].reset();
var row =
'<tr><td>' + data.PublisherName +
'</td><td>' + data.City +
'</td><td>' + data.State +
'</td><td> <a href="@Url.Action("Index", "PublishersEF")">Refresh View</a></td></tr>';
$('#Publisher' + data.PublisherID).replaceWith(row);
console.log('success');
$('PublisherEdit').hide();
$('#MessageContent').html('<div class="alert alert-warning">There was an error processing your update, please try again or contact the site administrator</div>');
},
error: function (e) {
console.log('error');
$('#MessageContent').html('<div class="alert alert-warning">There was an error processing your update, please try again or contact the site administrator</div>');
}
});
});
Ich habe versucht, sowohl den Erfolg und Fehler ein console.log innen zu setzen, und ich sehe nicht entweder von ihnen in der Konsole
EDIT: hier ist die C# Methode:
[HttpGet]
public PartialViewResult PublisherEdit(int id)
{
Publisher publisher = UnitOfWork.PublisherRepository.Find(id);
return PartialView(publisher);
}
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult PublisherEdit(Publisher publisher)
{
UnitOfWork.PublisherRepository.Update(publisher);
UnitOfWork.Save();
return Json(publisher);
}
ich die UnitOfWork bestätigen funktioniert richtig. All diese Funktion verbindet sich mit der Datenbank und aktualisiert/speichert die Informationen. Dies hat in früheren Versionen gearbeitet
Bitte post C# Methode. –
Haben Sie Fehler in der Konsole? –
Keine Fehler in der Konsole, in der Ajax-Funktion Ich habe eine console.log in den Erfolg und Fehler und nichts wurde in der Konsole angezeigt. Ich weiß, wenn ich die Debug-Tools hochziehen zeigt es das schließende Formular-Tag ist vor einem der Textfelder, aber das erstellen Formular erscheint das gleiche und funktioniert wie es sollte – feare56