2017-07-25 48 views
0

在我的項目,我用datatable的CRUD operation.but我有一個問題,有時沒有工作成功的功能,當然,我看到我收到{ status":true}datatable沒有重裝我的網絡選項卡,我重定向到空白page.I've添加報警功能轉化爲成功的功能,但我的提示功能也當我想從表中刪除一條記錄不work.sometimes我得到這個錯誤The required anti-forgery form field "__RequestVerificationToken" is not present.。有時也會給我消息createedit爲什麼有時候ajax成功函數在asp.net mvc中不起作用?

enter image description here

// GET: Admin/Users/Delete/5 
public ActionResult Delete(string id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    User user = db.User.Find(id); 
    UserViewModel userViewModel=new UserViewModel(); 
    userViewModel.UserId = user.Id; 
    userViewModel.UserName = user.UserName; 
    userViewModel.FirstName = user.FirstName; 
    userViewModel.LastName = user.LastName; 
    userViewModel.Email = user.Email; 
    userViewModel.IsActive = user.IsActive; 
    userViewModel.Gender = user.Gender; 
    userViewModel.PhoneNumber = user.PhoneNumber; 
    userViewModel.Address = user.Address; 
    if (user == null) 
    { 
     return HttpNotFound(); 
    } 
    return PartialView(userViewModel); 
} 

// POST: Admin/Users/Delete/5 
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public ActionResult DeleteConfirmed(string id) 
{ 
    bool status=false; 
    User user = db.User.Find(id); 
    db.User.Remove(user); 
    db.SaveChanges(); 

    return Json(new { status = true }, JsonRequestBehavior.AllowGet); 
} 

==========================

@model IEnumerable<Dentistry.Areas.ViewModels.UserViewModel> 


@{ 
    ViewBag.Title = "مدیریت کاربران"; 

} 

@*<h2>مدیریت کاربران</h2>*@ 

@section Styles{ 

    <link href="~/Areas/admin/assets/global/plugins/datatables/datatables.min.css" rel="stylesheet" type="text/css" /> 
    <link href="~/Areas/admin/assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap-rtl.css" rel="stylesheet" type="text/css" /> 
    <link href="~/Areas/admin/assets/global/plugins/bootstrap-modal/css/bootstrap-modal-bs3patch.css" rel="stylesheet" type="text/css" /> 
    <link href="~/Areas/admin/assets/global/plugins/bootstrap-modal/css/bootstrap-modal.css" rel="stylesheet" type="text/css" /> 
} 

<style> 
    .table-checkable tr > td:first-child, .table-checkable tr > th:first-child { 
     text-align: center; 
     max-width: 50000px; 
     min-width: 40px; 
     padding-right: 0; 
     padding-left: 0; 
    } 

    #delete .modal-header { 
     border-bottom: 1px solid #EFEFEF; 
     background: #e7505a !important; 
    } 

    .modal { 
     border-radius: 0px; 
     -webkit-border-radius: 0px; 
     -moz-border-radius: 0px; 
    } 
</style> 


<div class="col-md-12 col-sm-12"> 
    <!-- BEGIN EXAMPLE TABLE PORTLET--> 
    <div class="portlet box green"> 
     <div class="portlet-title"> 
      <div class="caption"> 
       <i class="fa fa-cogs"></i>کاربران 
      </div> 
      <div class="actions"> 
       <a href="/Admin/Users/Create" data-target="#create" data-toggle="modal" class="btn btn-default btn-sm"> 
        <i class="fa fa-plus"></i> کاربر جدید 
       </a> 
       <a href="javascript:window.print()" class="btn btn-default btn-sm"> 
        <i class="fa fa-print"></i> چاپ 
       </a> 
      </div> 
     </div> 
     <div class="portlet-body"> 
      <table class="table table-striped table-bordered table-hover table-checkable order-column myDatatable"> 
       <thead> 
        <tr> 
         @*<th class="table-checkbox"> 
           <label class="mt-checkbox mt-checkbox-single mt-checkbox-outline"> 
            <input type="checkbox" class="group-checkable" data-set="myDatatable .checkboxes" /> 
            <span></span> 
           </label> 
          </th>*@ 
         <th>نام کاربری </th> 
         <th>نام </th> 
         <th>نام خانوادگی</th> 
         <th>جنسیت</th> 
         <th>ایمیل</th> 
         <th>وضعیت</th> 
         <th>شماره تماس</th> 
         <th>آدرس</th> 
         <th>ویرایش</th> 
         <th>حذف</th> 
        </tr> 
       </thead> 


      </table> 
     </div> 
    </div> 
</div> 



<div id="edit" class="modal fade" tabindex="-1" data-width="760"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> 
     <h4 class="modal-title">ویرایش کاربران</h4> 
    </div> 
    <div class="modal-body"> 
     <div class="row"> 

     </div> 
    </div> 

</div> 

<div id="delete" class="modal fade" tabindex="-1" data-width="760"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> 
     <h4 class="modal-title">آیا قصد حذف این کاربر را دارید؟</h4> 
    </div> 
    <div class="modal-body"> 
     <div class="row"> 

     </div> 
    </div> 

</div> 

<div id="create" class="modal fade" tabindex="-1" data-width="760"> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> 
     <h4 class="modal-title"><i class="fa fa-user-plus"></i> کاربر جدید </h4> 
    </div> 
    <div class="modal-body"> 


    </div> 

</div> 

<!-- BEGIN Portlet PORTLET--> 
<!-- END Portlet PORTLET--> 




@section scripts{ 


    <!-- BEGIN PAGE LEVEL PLUGINS --> 
    <script src="~/Areas/admin/assets/global/scripts/datatable.js" type="text/javascript"></script> 
    <script src="~/Areas/admin/assets/global/plugins/datatables/datatables.min.js" type="text/javascript"></script> 
    <script src="~/Areas/admin/assets/global/plugins/datatables/plugins/bootstrap/datatables.bootstrap.js" type="text/javascript"></script> 

    <script src="~/Areas/admin/assets/pages/scripts/table-datatables-managed.min.js" type="text/javascript"></script> 
    <!-- END PAGE LEVEL SCRIPTS --> 
    <script src="~/Areas/admin/assets/global/plugins/bootstrap-modal/js/bootstrap-modalmanager.js" type="text/javascript"></script> 
    <script src="~/Areas/admin/assets/global/plugins/bootstrap-modal/js/bootstrap-modal.js" type="text/javascript"></script> 

    <!-- BEGIN PAGE LEVEL SCRIPTS --> 
    <script src="~/Areas/admin/assets/pages/scripts/ui-extended-modals.min.js" type="text/javascript"></script> 

    <script> 

     $(document).ready(function() { 

      var oTable = $('.myDatatable').DataTable({ 
       "ajax": "/Users/GetUsers", 
       "language": { 
        "search": "جستجو:", 
        "lengthMenu": " تعداد _MENU_ رکورد در هر صفحه" 
       }, 
       "autoWidth": true, 
       "columns": [ 

        { "data": "UserName", }, 
        { "data": "FirstName", }, 
        { "data": "LastName", }, 
        { "data": "Gender", }, 
        { "data": "Email", }, 
        { "data": "IsActive", }, 
        { "data": "PhoneNumber", }, 
        { "data": "Address", }, 

        { 
         "data": "UserId", "width": "50px", "render": function (data) { 
          // 
          return '<a class="btn btn-info fa fa-pencil" data-toggle="modal" data-dismiss="modal" data-target="#edit" href="/Admin/Users/Edit/' + data + '"></a>'; 
         } 
        }, 
        { 
         "data": "UserId", "width": "50px", "render": function (data) { 
          return '<a class="btn btn-danger fa fa-trash" data-toggle="modal" data-dismiss="modal" data-target="#delete" href="/Admin/Users/Delete/' + data + '"></a>'; 
         } 
        } 
        //}, { 
        // "data": 'IsActive', 
        // render: function (data, type, row) { 
        //  return '<span class="label label-sm label-success"> ' + data + ' </span>' 
        // } 
        //} 
       ], "columnDefs": [ 
        { 
         "render": function (data, type, row) { 
          return '<span class="label label-sm label-success"> ' + data ? 'آقا' : 'خانم' + ' </span>' ; 
         }, 
         "targets": 3 // replace 0 by your column if 
        }, { 
         "render": function (data, type, row) { 
          return data ? 'فعال' : 'غیرفعال'; 
         }, 
         "targets": 5 
        } 
       ] 
       //"fnCreatedRow": function (row, data, dataIndex) { 
       // var div = document.createElement("span"); 

       // $(row).children("td:nth-child(1)").append(div); 
       //} 

      }); 

      $('body').on('hidden.bs.modal', '.modal', function() { 

       $(this).removeData('bs.modal'); 
      }); 

     }); 


    </script> 
} 

===== ==============================

@model Dentistry.Areas.ViewModels.UserViewModel 

@*<h2>حذف</h2> 

    <h3>آیا شما قصد حذف این سطر را دارید؟</h3>*@ 
@*<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("Delete", "Users", FormMethod.Post, new { @class = "popupForm" })) 
{ 
    @Html.AntiForgeryToken() 
    if (Model != null && Model.UserId != string.Empty) 
    { 
     @Html.HiddenFor(a => a.UserId, new { id = "userId" }) 
     <div class="col-md-6"> 
      <div class="form-group"> 
       <label>نام کاربری : </label> 
       @Html.DisplayFor(model => model.UserName) 
      </div> 
      <div class="form-group"> 
       <label>نام : </label> 
       @Html.DisplayFor(model => model.FirstName) 
      </div> 
      <div class="form-group"> 
       <label>نام خانوادگی : </label> 
       @Html.DisplayFor(model => model.LastName) 
      </div> 
      <div class="form-group"> 
       <label>شماره همراه : </label> 
       @Html.DisplayFor(model => model.PhoneNumber) 
      </div> 
     </div> 
     <div class="col-md-6"> 
      <div class="form-group"> 
       <label>جنسیت</label> 
       @Html.DisplayFor(model => model.Gender) 
      </div> 
      <div class="form-group"> 
       <label>وضعیت : </label> 
       @Html.DisplayFor(model => model.IsActive) 
      </div> 
      <div class="form-group"> 
       <label>ایمیل : </label> 
       @Html.DisplayFor(model => model.Email) 
      </div> 
      <div class="form-group"> 
       <label>آدرس : </label> 
       @Html.DisplayFor(model => model.Address) 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-md-6"> 
       <button type="submit" class="btn btn-success btn-flat btn-md"><span class="fa fa-check"></span> بله </button> 
       <button type="button" class="btn btn-danger btn-flat btn-md"><span class="fa fa-close"></span> خیر</button> 
      </div> 
     </div> 
    } 
} 

<script> 

    $(function() { 
     //var form = $('#userId'); 
     //console.log(form); 
     console.log($('#userId').val()); 
     $(".popupForm").on("submit", function (e) { 
      e.preventDefault(); 
      // e.stopPropagation(); 
      SubmitDeleteForm(); 

     }); 
    }); 
    function SubmitDeleteForm() { 
     var formData = $(".popupForm").serialize(); 
     var url = "/Users/Delete"; 
      var form = $('.popupForm'); 
      var __RequestVerification [email protected](); 
      var token = $(__RequestVerification, form).val(); 
     // var form = $('.popupForm')[0].action; 
     // console.log(form.val()); 
     //var formdata = false; 
     //if (window.FormData) { 
     // formdata = new FormData(form); 
     // alert(formdata); 
     //} 
     var userId = JSON.stringify({ id: $("#userId").val() }); 
     $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: url, 
      data: { 

       __RequestVerificationToken: token, 
       id: userId 

      }, 

      cache: false, 
      //contentType: "application/json; charset=utf-8", 
      // enctype: 'multipart/form-data', 
      processData: false, 
      success: function (data) { 
       if (data.status == true) { 
        //alert('hiho'); 
        $('#edit').modal('hide'); 
        //window.location.href = "/Admin/Users/Index"; 
        alert('hi'); 
        $('.myDatatable').DataTable().ajax.reload(); 
       } 
      }, 
      error: function (data) { 
       console.log(data); 
      } 

     }); 
    } 



</script> 
+0

我已經讀了很多在StackOverflow上的聯繫,但他們不能幫我。 – rayan

回答

1

請刪除此行

[ValidateAntiForgeryToken] 

,因爲你不發送防僞造鍵。在ajax參數中發送防僞密鑰或刪除它。

發送在請求'__RequestVerificationToken'中添加此參數,其值將使用您要生成的值
var token = Html.AntiForgeryToken();

+0

__RequestVerificationToken解決感謝,但我也我得到這個消息** {狀態:真正} **事實上,我的記錄加入到刪除表或記錄,但我也重定向空白頁。我爲我的問題添加了一張圖片。成功功能不起作用。 – rayan

+0

我還更新了我的問題中的最後一個代碼。 – rayan

+0

@rayan我發現了其他幾個問題,首先你有一個表單,並且比你有一個ajax。當你點擊按鈕時,它會提交表單,這就是你重定向的原因。你可以做的是形式的按鈕還原序列化數據的點擊和Ajax調用 –

相關問題