Почему мое asp-действие вызывает неправильное действие в моем контроллере

#.net #asp.net-core-mvc

#.net #asp.net-core-mvc

Вопрос:

Новичок в .net core, у меня есть приложение mvc .net core, где я задаю параметры в частичном представлении, нажимаю кнопку «Отправить» и получаю список данных, возвращенных из действия createList в моем контроллере. Все это работает. Я добавил кнопку «экспорт в Excel» и выполняю действие ExportToExcel в том же контроллере, но когда я нажимаю кнопку «экспорт в Excel», оно переходит к действию «createList» вместо действия «ExportToExcel».

Я пробовал тип ввода = Submit и formaction = «createList» и «ExportToExcel» соответственно. Я попробовал кнопку asp-action =createList и кнопку asp-action = ExportToExcel, но она всегда переходит к действию createList

cshtml:

 <form asp-controller="CADIncidentData" method="post">
  <button asp-action="CreateList" asp-controller="CADIncidentData">View List</button>
  <button asp-action="ExportToExcel" asp-controller="CADIncidentData">Export To Excel</button>
</form>
  

Контроллер: CallIncidentData

 [HttpPost]
 public IActionResult CreateList(CallData.allParameters c)
   {
     ...code to create the list
   }

[HttpPost]
 public IActionResult ExportToExcel(CallData.allParameters c)
   {
     ...code to export to excel
   }
  

Мне нужно, чтобы asp-действие ExportToExcel переходило к действию ExportToExcel в моем контроллере, вместо перехода к «createList» в контроллере, где оно выполняется в данный момент. Я не понимаю, почему это НЕ происходит, и что я могу сделать, чтобы это исправить?

Комментарии:

1. Если вы меняете местами свои методы контроллера, вызывается ли ExportToExcel ?

2. Что произойдет, если вы удалите атрибут asp-controller из формы? Это не должно быть необходимо, поскольку оно находится на кнопках, и, возможно, оно переопределяет действия кнопки и направляет к первому действию на контроллере? Просто теория…

3. Я переключил действие ExportToExcel над createList и удалил атрибут asp-controller, но оба нажатия кнопок по-прежнему вызывают действие createList…

4. Код работает как есть. У вас есть какие-то специальные маршруты или атрибуты маршрутизации?

5. В моей конфигурации запуска это то, что у меня есть:

Ответ №1:

Глупая ошибка — в моем фактическом элементе действия не было ‘public’ (код, который я опубликовал, был упрощен для вопроса). Добавлен public, и это работает.