роутинг mvc 5 не получается вызвать метод

204
01 июля 2018, 23:40

Основные методы моего контроллера вызываются в виде:

controller/action?param1=12345&param2=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 ошибку. Что здесь не так?

Answer 1

У вас код правильный. Проверяется крайне легко: создаём пустой проект и добавляем контроллер с вашим кодом.

Маршруты в дефолтном приложении такие же как у вас:

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();
        }
    }
}

Так что ищите опечатку.

READ ALSO
Иморт базы данных mysql в postgresql

Иморт базы данных mysql в postgresql

Как можно залитьsql базу данных в postgresql под рукой только (windows)

196
.htaccess для локальных адресов

.htaccess для локальных адресов

Изучаю symfony и столкнулся с неприятной вещью, я вынужден маршруты настраивать следующим образом mysite/user и url будет такой localhost/mysite/user, как правильно...

198
Браузер не принимает Cookie

Браузер не принимает Cookie

Имеются два приложения:

185
Работа с array_intersect в PHP

Работа с array_intersect в PHP

Есть бесконечное число N массивов в массивеВ этих массивах также есть неопределённое количество элементов

206