Основные методы моего контроллера вызываются в виде:
controller/action?param1=12345¶m2=test
сейчас возникла необходимость вызвать в виде:
controller/action/param1
Файл RouteConfig.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "User", action = "Index", id = UrlParameter.Optional
});
}
Метод, который нужно вызывать:
[Route("User/Delete/{id}")]
public string Delete(int id)
{
// код
}
Соответственно, вызываю /User/Delete/12345, получаю 404 ошибку. Что здесь не так?
У вас код правильный. Проверяется крайне легко: создаём пустой проект и добавляем контроллер с вашим кодом.
Маршруты в дефолтном приложении такие же как у вас:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Контроллер тривиальный:
using System.Web.Mvc;
namespace WebApplication1.Controllers
{
public class UserController : Controller
{
//[Route("User/Delete/{id}")]
public string Delete(int id)
{
return id.ToString();
}
}
}
Так что ищите опечатку.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости