Ответ: Кажется, проблема в определении формы.вместо asp-action
я изменил его на action
и изменил значение на / MyController / ActionName / параметр1 / параметр2 / параметр3, и это помогло.Если бы кто-нибудь мог объяснить, почему это работает (хотя VS говорит, что этот путь не найден), я бы с удовольствием ответил.Спасибо.
Я пытаюсь загрузить файл и отправить несколько параметров для действия в моем ASP.NET Core Controller
.Однако кнопка отправки формы продолжает перенаправлять меня на действие Index, а не на то, что я указываю.Я попытался погуглить это и не нашел ответа.
Примечание: я использую Razor Views
Мой контроллер (это HomeController):
public ActionResult Index()
{
return View();
}
[Route("[controller]/[action]/cardNumber/sectionId/file")]
[HttpPost]
public ActionResult GenerateSingleCardData(string cardNumber, int sectionId, IFormFile file)
{
.... UNREACHABLE CODE
}
Фрагментмое представление (это частичное представление SingleCardForm):
<form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="GenerateSingleCardData">
Select file : <input type="file" name="file" required/> <br/>
Card Number: <input type="text" name="cardNumber" required/> <br/>
SectionID: <input type="number" name="sectionId" required/> <br/>
<input type="submit" value="Start"/>
РЕДАКТИРОВАТЬ: Полный просмотр:
<!DOCTYPE html>
<html>
<head>
<script src="/JQuery/jquery-3.3.1.min.js"></script>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<input type="radio" name="ActionType" checked="checked" onclick="ShowSingleCardForm()"> Single Card <br/>
<input type="radio" name="ActionType" onclick="ShowAllCardsForm()"> All Section Cards <br/>
<div id="Form">
@await Html.PartialAsync("SingleCardForm")
</div>
</body>
</html>
<script>
function ShowSingleCardForm() {
var url = '@Url.Action("GetSingleCardForm", "Home")';
LoadForm(url);
}
function ShowAllCardsForm() {
var url = '@Url.Action("GetAllCardsForm", "Home")';
LoadForm(url);
}
function LoadForm(url) {
var formDiv = document.getElementById("Form");
while (formDiv.firstChild) {
formDiv.removeChild(formDiv.firstChild);
}
$('#Form').load(url);
}
</script>