Задать вопрос
@Nposk

Как сделать URL из параметров в ASP?

Добрый день.
Немного теории:
Стандартно маршрут выглядит так:
/Users/Add/Alex/120
Контроллер/Метод/Параметр/Параметр

Можно ли из этой связки исключить "Метод" заменив его параметром, но чтоб контроллер его воспринимал как метод с параметром?
В итоге нужно получить
/Users/Alex/120
с действием "Add"
  • Вопрос задан
  • 252 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
GreenBee
@GreenBee
ASP.NET программист
Для этого есть методы по-умолчанию.

При стандартном роутинге, метод (действите) по-умолчанию "Index", но это можно изменить в конфигурации роутинга.

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );


это для всего сайта в классе Startup. Обрати внимание на фрагмент action = "Index"

Ты можешь либо прописать отдельный маршрут для своего контроллера там же либо через атрибуты:
routes.MapRoute(
                name: "Users",
                url: "Users/{action}/{id}",
                defaults: new { action = "Add", id = UrlParameter.Optional }
            );

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

через атрибуты так:
[Route]
    public ActionResult Add(int id) { … }
  
    [Route(“{Index}”)]
    public ActionResult Index() { … }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Если используется WebAPI контроллер то можно так:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

      }
    }

public class UsersController : System.Web.Http.ApiController
{
    [HttpPost]
    public void Add(string id, int p1)
    {
    }
}


но url должен быть /Users/Alex?p1=120 и метод POST (см. атрибут, можно и GET, но не хорошо методом GET, что либо добавлять) тогда id="Alex" p1=120
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы