Я пропустил немало сообщений, опробовал и опробовал и ничего не работал, или я что-то пропустил полностью, но у меня такое ощущение, не связаны ни с одной из этих других должностей. Я относительно новичок в 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>
Вы делаете редирект в вашем АЯКС обратного вызова. Нет смысла использовать ajax, если вы хотите перенаправить. Что вы пытаетесь сделать с этим кодом. И что такое элемент с '.delete-user'? Если его ссылка или кнопка отправки, вы не отменили действие по умолчанию –
Спасибо за ответ. Удалить пользователя - кнопка удаления в WebGrid, я обновил свой пост, чтобы включить его. Это код, который я нашел, и похоже, что он работает, но явно не полностью. Итак, что я хочу сделать, нажмите кнопку «Удалить» в WebGrid, появится подтверждение «Вы хотите удалить», а затем нажмите «Да». , удалите данные (предоставленные в контроллере) и обновите WebGrid и отобразите успешное предупреждение о загрузке. Каков правильный способ сделать это как удаление перенаправления, а затем ничего не делает и даже не ударил мой контроллер? – AxleWack
Каков правильный способ сделать это? Кто угодно ? – AxleWack