Ich habe datatable
Bibliothek zusammen mit zwei Schaltflächen bearbeiten und löschen.Wenn ich das Formular (modale Popup-Bootstrap) abschicken. Es schließt nicht und ich muss es auch manuell schließen Ich muss manuell aktualisieren meine "Datentabelle" zu zeigt meine Manipulationen.Ich habe zwei Probleme.1) modales Popup schließt nicht und 2) datatable
wird nicht aktualisiert.Wie modales Popup-Bootstrap zu schließen und Datatable nach Ajax-Aufruf in asp.net mvc zu aktualisieren?
@model Dentistry.Areas.ViewModels.UserViewModel
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
<h4 class="modal-title custom_align" id="Heading">ویرایش کاربران</h4>
</div>
@using (Html.BeginForm("Edit", "Users", FormMethod.Post, new { id = "popupForm" }))
{
@Html.AntiForgeryToken()
if (Model != null && Model.UserId != string.Empty)
{
<div class="modal-body" id="editModal">
<div class="form-group">
@Html.HiddenFor(a => a.UserId)
</div>
<div class="form-group">
<label>نام کاربری</label>
@Html.TextBoxFor(a => a.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.UserName)
</div>
<div class="form-group">
<label>نام</label>
@Html.TextBoxFor(a => a.FirstName, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.FirstName)
</div>
<div class="form-group">
<label>نام خانوادگی</label>
@Html.TextBoxFor(a => a.LastName, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.LastName)
</div>
<div class="form-group">
<label>جنسیت</label>
@Html.TextBoxFor(a => a.Gender, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.Gender)
</div>
<div class="form-group">
<label>وضعیت</label>
@Html.TextBoxFor(a => a.IsActive, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.IsActive)
</div>
<div class="form-group">
<label>ایمیل</label>
@Html.TextBoxFor(a => a.Email, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.Email)
</div>
<div class="form-group">
<label>آدرس</label>
@Html.TextBoxFor(a => a.Address, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.Address)
</div>
<div class="form-group">
<label>شماره تماس</label>
@Html.TextBoxFor(a => a.PhoneNumber, new { @class = "form-control" })
@Html.ValidationMessageFor(a => a.PhoneNumber)
</div>
@*<a href="#" id="btnSubmit" class="btn btn-success btn-block">ویرایش</a>*@
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-success btn-block" >ویرایش</button>
@*<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>*@
</div>
}
}
<script>
//$(document).ready(function() {
$(function() {
$('#popupForm').on('submit', function (e) {
e.preventDefault();
alert("hi");
SubmitForm();
})
});
function SubmitForm() {
var data = $("#popupForm").serialize();
var url = "/Users/Edit";
var form = $('#popupForm')[0];
var formdata = false;
if (window.FormData) {
formdata = new FormData(form);
}
alert(formdata);
$.ajax({
type: 'POST',
dataType: 'json',
url: url,
data: formdata ? formdata : data,
cache: false,
contentType: false,
// enctype: 'multipart/form-data',
processData: false,
success: function (data) {
if (data == true) {
$('#edit').modal('hide');
window.location.href="/Users/Index";
$("#myDatatable").ajax.reload();
}
}
});
}
</script>
============================ ================
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(UserViewModel user)
{
bool status=false;
if (ModelState.IsValid)
{
var userQuery=db.User.SingleOrDefault(u => u.Id == user.UserId);
if (user.UserId != string.Empty)
{
userQuery.FirstName = user.FirstName;
userQuery.LastName = user.LastName;
userQuery.PhoneNumber = user.PhoneNumber;
userQuery.UserName = user.UserName;
userQuery.Email = user.Email;
userQuery.Address = user.Address;
userQuery.Gender = Convert.ToBoolean(user.Gender);
userQuery.IsActive = Convert.ToBoolean(user.IsActive);
}
else
{
User userDB=new User();
userDB = userQuery;
db.User.Add(userDB);
}
// db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
status = true;
}
// return RedirectToAction("Index");
// return View(user);
return new JsonResult { Data = new { status = status } };
}
Klingt wie die Ajax-Methode nicht ist Erfolg bringen. Überprüfen Sie die Netzwerkregisterkarte im Browser und sehen Sie. – nurdyguy
@nurdyguy, ja genau, meine Ajax-Methode funktioniert nicht.Ich habe eine Warnung in die Erfolgsfunktion hinzugefügt, die nicht ausgelöst wird. – rayan
Was sagt es in der Registerkarte Netzwerke? Etwas? Nur weil es nicht zum Erfolg kam, heißt das nicht, dass es nicht geschossen hat. Sie sollten immer eine 'error: function() {...}' Methode haben, auch wenn Sie nichts damit machen. – nurdyguy