ASP.NET Core 8 MVC: действие не может иметь значение именованного маршрута, отличное от идентификатораC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Core 8 MVC: действие не может иметь значение именованного маршрута, отличное от идентификатора

Сообщение Anonymous »

Справочная информация
Я новичок в .NET Core и ASP.NET Core MVC, раньше я работал с .NET 4. x и ASP.NET MVC 5, поэтому будьте терпеливы, если я спрашиваю что-то очевидное; Никаким поиском я не смог найти ответ.
Использованный материал:
  • .NET 8
    ASP.NET Core MVC
  • jQuery
У меня есть контроллер с действием такие методы, как следующие:

Код: Выделить всё

[Area("SomeArea")]
public class SomeNameController : Controller
{
public SomeNameController(..injected stuff...) { }

[HttpGet]
public PartialViewResult AddDialog()
{
// ...
}

[HttpPost]
public async Task AddDialog(MyDialogModel dialogModel)
{
// ...
}

[HttpDelete]
[Route("DoSomeDeletion/{uniqueIdentifier}")]
public async Task DoSomeDeletion(int uniqueIdentifier)
{
// ...
return Json(result);
}
}
В Startup.cs, где среди прочего настраиваются некоторые вещи:

Код: Выделить всё

app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapBlazorHub();

endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=index}/{action=Index}/{id?}");

endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=index}/{action=Index}/{id?}");

endpoints.MapFallbackToPage("/_Host");

});
На моей странице есть следующий JS для добавления обработчика кликов и удаления Ajax:

Код: Выделить всё

$("#MyGrid").on('click', '.js-delete-btn', function (e) {
e.preventDefault();
var url = this.href,
data = $("#GridForm").serializeObject();
$.ajax({
method: "DELETE",
url: url,
data: data
})
.done(function (jqXHR, textStatus) {
toastr.success("Yay! Deleted successfully", null, {
timeout: 5000,
onHidden: function () { window.location.reload(); }
});
})
.fail(function (jqXHR, textStatus, errorThrown) {
toastr.error("Uh-oh something went wrong", null, { timeout: 5000 });
});
});
В приведенном выше примере href, используемый для запроса AJAX, будет выглядеть примерно так:

Код: Выделить всё

/SomeArea/SomeName/DoSomeDeletion/356
Сериализуемая форма содержит токен защиты от подделки, полученный при попытке выполнить действие MVC с помощью [HttpPost]
< Strong>Проблема
Если я установлю точку останова в методе действия DoSomeDeletion, она никогда не будет достигнута. Однако если я удалю из него атрибут Route, он будет обработан.
Что я пробовал
  • Я пробовал использовать [HttpPost] вместо [HttpDelete]
  • Для обоих HttpDelete и HttpPost, я использовал перегрузку, которая позволяет указать шаблон маршрута, аналогичный атрибуту Route.
  • Если я изменю URL-адрес, чтобы идентификатор был строкой запроса, например. ?uniqueIdentifier=365, тогда оно будет применено к действию, и значение будет привязано к параметру действий.
Наблюдения< /strong>
  • Удаление атрибута маршрута, чтобы действие было выполнено. Я вижу, что Request.RouteValues имеет {id} значение, которое установлено на значение из URL-адреса, который я сделал УДАЛИТЬ вызов AJAX.

Вопрос

Я не использовал атрибуты для маршрутизацию раньше, так что, возможно, я что-то упускаю, но в ASP.NET MVC 5 на .NET 4.8 у меня никогда не было подобных проблем, я мог получить одно или несколько значений маршрута из URL-адреса и называть их так, как я хотел.< /p>
Что происходит? Почему я не могу использовать имена значений маршрутов, которые хочу использовать?

Подробнее здесь: https://stackoverflow.com/questions/781 ... er-than-id
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создать значение, отличное от идентификатора, из последовательности
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как добиться того же эффекта, что и ASP.Net MVC Server.Transfer в ASP.Net Core MVC?
    Anonymous » » в форуме C#
    0 Ответы
    98 Просмотры
    Последнее сообщение Anonymous
  • Как добиться того же эффекта, что и ASP.NET MVC Server.Transfer в ASP.NET Core MVC?
    Anonymous » » в форуме C#
    0 Ответы
    105 Просмотры
    Последнее сообщение Anonymous
  • Реализация выхода из Azure B2C в приложениях ASP.NET Core MVC и ASP.NET MVC.
    Anonymous » » в форуме C#
    0 Ответы
    109 Просмотры
    Последнее сообщение Anonymous
  • Почему атрибут, создаваемый с помощью дескриптора объекта, должен иметь значение, отличное от его исходного имени?
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»