juan_van Ответов: 2

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


Я хочу, чтобы маршрут выглядел так
[Route("{foo}/{bar}")]

Индекс ActionResult(строка Foo, бар последовательности){}

Затем каждый Url-адрес использует этот ActionResult,
Home / Index Home/Contact OtherFoo/OtherBar все будут указывать на индекс из-за объявленного маршрута.

Что я уже пробовал:

Прямо сейчас у меня и все остальные маршруты работают так, как ожидалось.
[Route("static/{foo}/{bar}")]

2 Ответов

Рейтинг:
0

juan_van

Я делаю маршрут, но он имеет тот же эффект, главная/контактная информация направляется в TestIndex.

routes.MapRoute(
               name: "TestRoute",
               url: "{foo}/{bar}",
               defaults: new { controller = "FooBar", action = "TestIndex", foo = UrlParameter.Optional, bar = UrlParameter.Optional }
           );


public class FooBarController : Controller
   {
       // GET: TestIndex
       public ActionResult TestIndex(string foo, string bar)
       {


           return View();
       }
   }


Спасибо за предложение!


Рейтинг:
0

David_Wimbley

Я не думаю, что то, о чем вы просите, работает в маршрутизации на основе атрибутов. Вам придется делать то, что вы хотите, с помощью обычной маршрутизации.

routes.MapRoute(
                "HomeIndexParamOnlyRoute",
                "{foo}/{bar}",
                new {controller = "Home", action = "Index"}
                );


Место, которое в RouteConfig.КС. Убедитесь, что он находится перед маршрутом по умолчанию (ниже).

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


Тогда HomeIndexParamOnlyRoute выше позволит вам использовать URL-адрес, например http://localhost:51830/foo/bar вместо того, чтобы делать http://localhost:51830/home/index/foo/bar