#.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, и это работает.