Почему мои маршруты не ведут себя, как ожидалось? - PullRequest
1 голос
/ 29 декабря 2011

У меня есть 3 действия в контроллере. Я бы хотел, чтобы первые два были /posts/new, а последние - /posts/{filter}?page=N

//all are in the PostsController
[HttpGet]
public ActionResult New()

[HttpPost]
public ActionResult New(PostView post)

[HttpGet]
public ActionResult Browse(string filter, int page)

Маршруты, которые я определил сейчас:

routes.MapRoute("BrowsePosts",
    "posts/{filter}",
    new { controller = "posts", action = "browse", filter = "", page = 1 },
    new { controller = "posts", action = "browse", page = @"\d+" });

routes.MapRoute("NewPost",
    "posts/new",
    new { controller = "", action = "" },
    new { controller = "posts", action = "new" });

Я думал, что ограничения, наложенные на них, помогут, но все запросы отправляются по первому маршруту. Что я делаю не так?

1 Ответ

5 голосов
/ 29 декабря 2011

Ваш маршрут "NewPost" должен быть первым, так как этот маршрут будет соответствовать вашему маршруту "BrowsePosts".

Маршруты анализируются по порядку и при первом совпадении, которое является используемым маршрутом.

Сначала проложите маршрут «NewPost», и он должен быть исправлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...