Проблема: помощник тега asp-action выводит URL, который содержит слишком много сегментов.
У моего вида Razor есть эта строка:
<form method="post" asp-action="Edit" asp-controller="Task">
Когда я запускаю GET /Task/Edit/1
для моего приложения, приведенный выше помощник по тегам приводит к: (обратите внимание на последний сегмент, 1
)
<form method="post" action="/Task/Edit/1">
Трейлинг 1
беспокоит меня. Я хочу отправить форму обратно на /Task/Edit
. Я чувствую, что должен разобраться в маршрутах, но, похоже, не могу получить правильную комбинацию.
Два метода действий: один для просмотра деталей, другой для применения изменений.
[HttpGet]
public ActionResult Edit(string id)
{
return View(_taskRepository.Get(new Guid(id)));
}
[HttpPost]
public IActionResult Edit(Task task)
{
// ...
return View(task);
}
public class Task
{
public int TaskId { get; set; }
}
Мой маршрут:
routes.MapRoute(name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Task", action = "Index" }
);
Как это исправить, чтобы asp-action
выводил /Task/Edit
в элементе <form>
? И откуда взялся 1
?