Как правильно настроить routetable для направления URL на действие контроллера

В приложении MVC 5 я хочу принять два разных типа URL запроса:

  1. http://www.myapp.com/brand/controller/action
  2. http://www.myapp.com/controller/action

Оба URL должны быть направлены на действия контроллера.

Я пытался включить в него необязательный параметр brand, но безуспешно.

RouteTable.Routes.MapRoute(
    "default",
    "{brand}/{controller}/{action}",
    new { brand = UrlParameter.Optional, controller = "Home", action = "Index" });

Видимо необязательный параметр недопустим перед контроллером.

Любая идея?

1 ответ

Спасибо за ваш комментарий, Стивен.

Я хочу вставить необязательный параметр brand в URL, бренд должен содержать несколько строковых значений, но здесь я хочу игнорировать его и направить на корректное действие контроллера.

Ну, я нашел одну функцию, которая может быть полезна для этого случая:

RouteTable.Routes.MapMvcAttributeRoutes();

Но дело в том, что я должен поставить атрибут Route для каждого действия контроллера, например:

  public class LoginController : Controller
  {
    [HttpGet]
    [Route("~/{brand}/Login")]
    [Route("~/Login")]
    public ActionResult Index()
    {
      return View();
    }
  }

Может быть, мне нужно найти несколько примеров, как использовать атрибуты маршрутов.

Другие вопросы по тегам