Нажатие на определенную Ajax ActionLink в этом приложении, которое я только что унаследовал, создает запрос POST И запрос GET (POST, а затем GET сразу после).Первый запрос обращается к методу HttpPost на сервере, но второй запрос (GET) выдает ошибку «404 (не найдено)» в браузере.Как мне остановить нежелательный запрос GET?Откуда это происходит?
Если я изменяю метод с POST на GET, происходит обратное, когда POST выдает ошибку вместо GET.
Я искал в приложении похожие запросытот же метод HttpPost, который был настроен как GET, и его нет.
Я искал пользовательский JavaScript, который прикреплял дополнительное событие click ко всем ссылкам, и не было ни одного экземпляра этого.Могут ли быть другие события, которые приведут к тому же результату в этом случае?
Снимок экрана Chrome DevTools
В DocumentManagementController.cs:
[HttpPost]
public ActionResult OpenPopup(string ntgLoadId) { ... }
В _GridLoadsAddendum.cshtml:
@Html.DevExpress().GridView(
settings =>
{
settings.Name = "DetailedGrid_" + Model.LoadId;
settings.Width = Unit.Percentage(100);
settings.Settings.ShowFilterRow = false;
settings.Settings.ShowGroupPanel = false;
settings.Settings.ShowFooter = false;
settings.Settings.ShowColumnHeaders = false;
settings.KeyFieldName = "NtgLoadId";
settings.Columns.Add(column =>
{
column.FieldName = "Status";
column.Caption = "Status";
column.Width = Unit.Pixel(83);
column.SetDataItemTemplateContent(c =>
{
ViewContext.Writer.Write(
Ajax.ActionLink(
DataBinder.Eval(c.DataItem, "Status").ToString(),
"OpenPopup",
"DocumentManagement",
new
{
ntgLoadId = c.KeyValue.ToString()
},
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "ModalContainer",
AllowCache = false
},
new
{
@class = "status-link",
data_Toggle = "modal",
data_Target = "#ModalContainer",
data_backdrop = "static",
data_Keyboard = "false"
}).ToHtmlString());
});
});
settings.Styles.Table.CssClass = "MVCxGridViewTable";
settings.Styles.Header.CssClass = "MVCxGridViewHeader";
settings.Styles.Cell.CssClass = "MVCxGridViewCell addendum";
settings.Styles.CommandColumnItem.CssClass = "MVCxGridViewCell";
settings.Styles.AlternatingRow.CssClass = "MVCxGridViewAlternatingRow addendum";
settings.Styles.PagerBottomPanel.CssClass = "MVCxGridViewPagerBottomPanel";
settings.Settings.ShowFooter = false;
settings.ClientSideEvents.BeginCallback = "initechPortal.carrierPaymentStatusHelper.gridResultsHelper.beginCallback";
settings.CallbackRouteValues = new
{
Controller = "CarrierPaymentController",
Action = "GridLoadsAddendum",
Id = Model.LoadId
};
settings.DataBound = (sender, e) =>
{
MVCxGridView gv = sender as MVCxGridView;
gv.Visible = gv.VisibleRowCount > 0;
};
}).BindToLINQ(
string.Empty,
string.Empty,
new EventHandler<DevExpress.Data.Linq.LinqServerModeDataSourceSelectEventArgs>(
(s, e) =>
{
e.QueryableSource = Model.CarrierPaymentResultData;
e.KeyExpression = "ntgLoadId";
})).GetHtml();