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>
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 –
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
Was ist der richtige Weg? Jeder? – AxleWack