2016-05-30 14 views
0

Ich habe schon ein paar Posts durchprobiert und getestet und nichts hat funktioniert, oder ich habe etwas komplett verpasst, aber ich habe dieses Gefühl meine Situation ist keinen dieser anderen Beiträge verwandt. Ich bin relativ neu bei MVC und habe keine Ahnung, was die Ursache für dieses Problem ist.Zeile aus WebGrid löschen löscht Controller zweimal (Parameterdaten löschen) MVC, JSON

Problem: Ich lösche ein Element in einem WebGrid. Ich habe ein Bestätigungsfeld und wenn Ja angeklickt wird, löscht es das Element, aber dann wird der Controller zweimal gedrückt und ein Parameter, den ich übergebe, wird gelöscht, um eine Warnung anzuzeigen (Dieser Parameter wird verwendet, um Erfolg bei Neu- und Editier- und Fehler bei Fehler anzuzeigen . Allerdings wird das Element gelöscht, sondern als Parameterwert kein Erfolg Alarm verloren wird, wenn Index Action ein zweites Mal gebrannt wird

Was mache ich falsch

Controller:.?

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 Ansicht:

$(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

Sie eine Umleitung in Ihrem Ajax-Rückruf zu tun. Es macht keinen Sinn, Ajax zu verwenden, wenn Sie umleiten möchten. Was versuchen Sie mit diesem Code? Und was ist das Element mit '.delete-user'? Wenn es ein Link oder Senden Schaltfläche ist, haben Sie seine Standardaktion nicht abgebrochen –

+0

Danke für die Antwort. Der Lösch-Benutzer ist die Löschen-Schaltfläche auf dem WebGrid, ich habe meinen Beitrag aktualisiert, um ihn einzuschließen. Dies ist der Code, den ich gefunden habe und dieser Typ schien zu funktionieren, aber offensichtlich nicht vollständig - also was ich tun möchte ist, klicken Sie auf die Schaltfläche Löschen auf dem WebGrid, Bestätigung erscheint "Möchten Sie löschen" und dann auf Ja klicken Löschen Sie die Daten (im Controller enthalten), aktualisieren Sie das WebGrid und zeigen Sie die erfolgreiche Bootstrap-Warnung an. Was ist der richtige Weg dies zu tun, da das Entfernen der Umleitung dann nichts tut und nicht einmal meinen Controller trifft? – AxleWack

+0

Was ist der richtige Weg? Jeder? – AxleWack

Antwort

0

ich es endlich funktioniert. Ich habe den unten stehenden Code für den Fall gepostet, dass er in Zukunft jemand anderem hilft. Dies ist vielleicht nicht der "richtige" Weg, denn ich bin immer noch neu in all dem, aber das hat für mich funktioniert - also hoffe ich, dass es jemand anderem hilft!

Prost!

Controller:

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"); 
         } 

        }); 
       } 
      }); 

Schalter für Benachrichtigungen + 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>