2016-05-30 6 views
0

Я пропустил немало сообщений, опробовал и опробовал и ничего не работал, или я что-то пропустил полностью, но у меня такое ощущение, не связаны ни с одной из этих других должностей. Я относительно новичок в MVC и понятия не имею, в чем причина этой проблемы.Удаление строки из WebGrid дважды удаляет контроллер (Очистка данных параметров) MVC, JSON

Проблема: я удаляю элемент в WebGrid. У меня есть окно подтверждения, и если «Да» нажата, он удаляет элемент, но затем контроллер дважды ударяет, очищая параметр, который я передаю, чтобы отобразить предупреждение (этот параметр используется для отображения успеха на новом и редактирования и сбоя при ошибке . Тем не менее, этот элемент удаляется, но никакого успеха оповещения в качестве значения параметра не теряется, когда индекс ActionResult обжигают 2-й раз

Что я делаю неправильно

контроллер:.?

public ActionResult Index(PipelineDetails model, int id, string Result) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     //PipelineViewModel PL = new PipelineViewModel(); 
     PipelineDetails PL = new PipelineDetails(); 
     ProjectManager PM = new ProjectManager(); 

     PL.fkiProjectID = id; 

     PipeList = PM.GetPipelineList(id); 
     PL.PipelineListmodel = PipeList; 

     foreach (var item in PipeList) 
     { 
      PL.fkiProjectID = item.fkiProjectID; 
      PL.pkiPipeline = item.pkiPipeline; 

      if (Result == null) 
      { 
       PL.Result = ""; 
      } 
      else 
      { 
       PL.Result = Result; 
      } 
     } 

     return View(PL); 
    } 

public ActionResult Delete_PipelineInfo(PipelineDetails_Delete model) 
    { 
     string Result = ""; 
     ProjectManager PM = new ProjectManager(); 

     int ProjectID = model.fkiProjectID; 
     //Update model to DB 
     Result = PM.DeletePipeLineSingle(model.fkiProjectID, model.pkiPipeline); 

     return RedirectToAction("Index", "Pipeline", new { id = ProjectID, result = Result }); 
    } 

JSON in Вид:

$(function() { 
      $('.edit-mode').hide(); 
      $('.delete-user').on('click', function() { 
       var tr = $(this).parents('tr:first'); 
       var PLID = tr.find("#pkiPipeline").html(); 
       var PLAccumulated_Length = tr.find("#Accumulated_Length").val(); 
       var PLElevation = tr.find("#Elevation").val(); 
       var PLPipe_Outside_Diameter = tr.find("#Pipe_Outside_Diameter").val(); 
       var PLWall_Thickness = tr.find("#Wall_Thickness").val(); 
       var PLControl_Point_Description = tr.find("#Control_Point_Description").val(); 
       var PLControl_Point_Size = tr.find("#Control_Point_Size").val(); 
       var PLProjectID = tr.find(".fkiProjectID").val(); 

       var PipelineDetails = 
       { 
        "pkiPipeline": PLID, 
        "fkiProjectID": PLProjectID 
       }; 
       if (confirm('Are you sure you want to delete this Pipeline item?')) { 
        $.ajax({ 
         url: '/Pipeline/Delete_PipelineInfo', 
         data: JSON.stringify(PipelineDetails), 
         type: 'POST', 
         contentType: 'application/json; charset=utf-8', 
         success: function (data) { 
          window.location.href = "/Pipeline/Index/" + PLProjectID; 
         } 

        }) 
       } 
      }); 
     }); 

WebGrid:

<div id="gridContent" style="font-family: Arial; padding: 20px; overflow:auto;height:380px" class="col-md-12"> 
@grid.GetHtml(tableStyle: "webgrid-table", 
    headerStyle: "webgrid-header", 
    footerStyle: "webgrid-footer", 
    alternatingRowStyle: "webgrid-alternating-row", 
    selectedRowStyle: "webgrid-selected-row", 
    rowStyle: "webgrid-row-style", 
    mode: WebGridPagerModes.All, 
    columns: 
     grid.Columns(
     grid.Column("pkiPipeline", "Node Nr.", format: @<text> <span class="display-mode">@item.pkiPipeline </span> <label id="pkiPipeline" class="edit-mode">@item.pkiPipeline</label> </text>, style: "col1Width"), 
     grid.Column("Accumulated_Length", "Accumulated Length", format: @<text> <span class="display-mode"> <label id="lblAccumulated_Length">@item.Accumulated_Length</label> </span> <input type="text" id="Accumulated_Length" value="@item.Accumulated_Length" class="edit-mode" /></text>, style: "col2Width"), 
     grid.Column("Elevation", "Elevation", format: @<text> <span class="display-mode"> <label id="lblElevation">@item.Elevation</label> </span> <input type="text" id="Elevation" value="@item.Elevation" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Pipe_Outside_Diameter", "Pipe Outside Diameter", format: @<text> <span class="display-mode"> <label id="lblPipe_Outside_Diameter">@item.Pipe_Outside_Diameter</label> </span> <input type="text" id="Pipe_Outside_Diameter" value="@item.Pipe_Outside_Diameter" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Wall_Thickness", "Wall Thickness", format: @<text> <span class="display-mode"> <label id="lblWall_Thickness">@item.Wall_Thickness</label> </span> <input type="text" id="Wall_Thickness" value="@item.Wall_Thickness" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Control_Point_Description", "Control Point Description", format: @<text> <span class="display-mode"> <label id="lblControl_Point_Description">@item.Control_Point_Description</label> </span> <input type="text" id="Control_Point_Description" value="@item.Control_Point_Description" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Control_Point_Size", "Control Point Size", format: @<text> <span class="display-mode"> <label id="lblControl_Point_Size">@item.Control_Point_Size</label> </span> <input type="text" id="Control_Point_Size" value="@item.Control_Point_Size" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("", format: @<text> 
       <input type="hidden" class="fkiProjectID" value="@item.fkiProjectID" /> 
       <div class="container" style="width:120px"> 
        <div class="btn-group-xs"> 
         <button data-loading-text="Loading..." class="edit-user display-mode btn btn-default2" autocomplete="off">Edit</button> 
         <button class="delete-user display-mode btn btn-default2">Delete</button> 
        </div> 
       </div> 
     </text>, style: "col3Width", canSort: false) 
     )) 
</div> 
+0

Вы делаете редирект в вашем АЯКС обратного вызова. Нет смысла использовать ajax, если вы хотите перенаправить. Что вы пытаетесь сделать с этим кодом. И что такое элемент с '.delete-user'? Если его ссылка или кнопка отправки, вы не отменили действие по умолчанию –

+0

Спасибо за ответ. Удалить пользователя - кнопка удаления в WebGrid, я обновил свой пост, чтобы включить его. Это код, который я нашел, и похоже, что он работает, но явно не полностью. Итак, что я хочу сделать, нажмите кнопку «Удалить» в WebGrid, появится подтверждение «Вы хотите удалить», а затем нажмите «Да». , удалите данные (предоставленные в контроллере) и обновите WebGrid и отобразите успешное предупреждение о загрузке. Каков правильный способ сделать это как удаление перенаправления, а затем ничего не делает и даже не ударил мой контроллер? – AxleWack

+0

Каков правильный способ сделать это? Кто угодно ? – AxleWack

ответ

0

я, наконец, получил это работает. Я опубликовал код ниже, если он поможет кому-то еще в будущем. Это может быть не «правильный» способ, поскольку я все еще новичок во всем этом, но это сработало для меня. Поэтому я надеюсь, что это поможет кому-то еще!

Cheers!

Контроллер:

public JsonResult Delete_PipelineInfo(PipelineDetails model) 
    { 
     String DeleteResult = String.Empty; 
     String result = String.Empty; 

     PipelineDetails PL = new PipelineDetails(); 
     ProjectManager PM = new ProjectManager(); 

     PL.fkiProjectID = model.fkiProjectID; 

     PipeList = PM.GetPipelineList(model.fkiProjectID); 
     PL.PipelineListmodel = PipeList; 

     PipelineDetails PD = PipeList.Find(p => p.pkiPipeline == model.pkiPipeline && p.fkiProjectID == model.fkiProjectID); 
     if (PD != null) 
     { 
      PipeList.Remove(PD); 
      result = "1"; 
      DeleteResult = PM.DeletePipeLineSingle(model.fkiProjectID, model.pkiPipeline); 
     } 
     else 
      result = "0"; 

     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

JSON:

$('.delete-user').on('click', function() { 
       if (confirm("Are you sure to delete this Pipeline item?")) { 
        var tr = $(this).parents('tr:first'); 

        var PLID = tr.find("#pkiPipeline").html(); 
        var PLAccumulated_Length = tr.find("#Accumulated_Length").val(); 
        var PLElevation = tr.find("#Elevation").val(); 
        var PLPipe_Outside_Diameter = tr.find("#Pipe_Outside_Diameter").val(); 
        var PLWall_Thickness = tr.find("#Wall_Thickness").val(); 
        var PLControl_Point_Description = tr.find("#Control_Point_Description").val(); 
        var PLControl_Point_Size = tr.find("#Control_Point_Size").val(); 
        var PLProjectID = tr.find(".fkiProjectID").val(); 
        var PLResult = "Delete Success"; 

        var PipelineDetails = 
        { 
         "pkiPipeline": PLID, 
         "Accumulated_Length": PLAccumulated_Length, 
         "Elevation": PLElevation, 
         "Pipe_Outside_Diameter": PLPipe_Outside_Diameter, 
         "Wall_Thickness": PLWall_Thickness, 
         "Control_Point_Description": PLControl_Point_Description, 
         "Control_Point_Size": PLControl_Point_Size, 
         "fkiProjectID": PLProjectID, 
         "Result" : PLResult 
        }; 


        $.ajax({ 

         url: '/Pipeline/Delete_PipelineInfo/', 
         data: JSON.stringify(PipelineDetails), 
         type: 'POST', 
         contentType: 'application/json; charset=utf-8', 
         success: function (result) { 
          isSuccess = result; 
         }, 
         error: function (result) { 
          isSuccess = result; 
         } 
        }).done(function() { 
         if (isSuccess == "1") {   // Successfully Deleted 
          //alert("Successfully Deleted"); 
          //location.reload();  // refresh the page 
          window.location.href = "/Pipeline/Index/" + PLProjectID + "?result=" + PLResult; 
         } 
         else {      // Data Error 
          alert("Error. Please, check the data"); 
         } 

        }); 
       } 
      }); 

Переключатель для оповещения + WebGrid:

@model AirFlo_Size_Programme.Models.PipelineDetails 

@{ 
ViewBag.Title = "Pipe Line"; 
Layout = "~/Views/Shared/_Layout_ProjectFlow.cshtml"; 
var grid = new WebGrid(Model.PipelineListmodel, canPage: false); 
} 

@switch (Model.Result) 
{ 
case "Success": 
    <div class="alert alert-success" id="pipelinesuccess"> 
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
     <strong>Saved!</strong> Pipeline added successfully. 
    </div> 
    break; 
    case "False":@*This means that no result has been passed so no Action is required*@ 
case "": 
case null: 
break; 
case "Delete Success": 
<div class="alert alert-success" id="pipelineDeleteSuccess"> 
    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
    <strong>Deleted!</strong> Pipeline deleted successfully. 
</div> 
    break; 
    case "Edit Success": 
    <div class="alert alert-success" id="pipelineDeleteSuccess"> 
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
     <strong>Saved!</strong> Pipeline Edited successfully. 
    </div> 
    break; 
default: 
    <div class="alert alert-danger" id="pipelinefailed"> 
     <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
     <strong>Failed!</strong> The following error occurred : @Model.Result 
    </div> 
    break; 
} 

<div id="gridContent" style="font-family: Arial; padding: 20px; overflow:auto;height:380px" class="col-md-12"> 
@grid.GetHtml(tableStyle: "webgrid-table", 
    headerStyle: "webgrid-header", 
    footerStyle: "webgrid-footer", 
    alternatingRowStyle: "webgrid-alternating-row", 
    selectedRowStyle: "webgrid-selected-row", 
    rowStyle: "webgrid-row-style", 
    mode: WebGridPagerModes.All, 
    columns: 
     grid.Columns(
     grid.Column("pkiPipeline", "Node Nr.", format: @<text> <span class="display-mode">@item.pkiPipeline </span> <label id="pkiPipeline" class="edit-mode">@item.pkiPipeline</label> </text>, style: "col1Width"), 
     grid.Column("Accumulated_Length", "Accumulated Length", format: @<text> <span class="display-mode"> <label id="lblAccumulated_Length">@item.Accumulated_Length</label> </span> <input type="text" id="Accumulated_Length" value="@item.Accumulated_Length" class="edit-mode" /></text>, style: "col2Width"), 
     grid.Column("Elevation", "Elevation", format: @<text> <span class="display-mode"> <label id="lblElevation">@item.Elevation</label> </span> <input type="text" id="Elevation" value="@item.Elevation" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Pipe_Outside_Diameter", "Pipe Outside Diameter", format: @<text> <span class="display-mode"> <label id="lblPipe_Outside_Diameter">@item.Pipe_Outside_Diameter</label> </span> <input type="text" id="Pipe_Outside_Diameter" value="@item.Pipe_Outside_Diameter" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Wall_Thickness", "Wall Thickness", format: @<text> <span class="display-mode"> <label id="lblWall_Thickness">@item.Wall_Thickness</label> </span> <input type="text" id="Wall_Thickness" value="@item.Wall_Thickness" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Control_Point_Description", "Control Point Description", format: @<text> <span class="display-mode"> <label id="lblControl_Point_Description">@item.Control_Point_Description</label> </span> <input type="text" id="Control_Point_Description" value="@item.Control_Point_Description" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("Control_Point_Size", "Control Point Size", format: @<text> <span class="display-mode"> <label id="lblControl_Point_Size">@item.Control_Point_Size</label> </span> <input type="text" id="Control_Point_Size" value="@item.Control_Point_Size" class="edit-mode" /> </text>, style: "col2Width"), 
     grid.Column("", format: @<text> 
       <input type="hidden" class="fkiProjectID" value="@item.fkiProjectID" /> 
       <div class="container" style="width:120px"> 
        <div class="btn-group-xs"> 
         <button data-loading-text="Loading..." class="edit-user display-mode btn btn-default2" autocomplete="off">Edit</button> 
         <button class="delete-user display-mode btn btn-default2">Delete</button> 
        </div> 
       </div> 
     </text>, style: "col3Width", canSort: false) 
     )) 
</div>