StackOverflow, как перенаправление маршрутизации - PullRequest
0 голосов
/ 14 ноября 2011

Я создаю веб-сайт с маршрутами, очень похожими на SO, в том смысле, что они:

posts/{id}/{title}

Я хочу скопировать функциональность для любого заданного маршрута X

все, что начинается с /posts/{id} и имеет неправильный заголовок, перенаправляется на /posts/{id}/{title}

делать это в контроллере кажется довольно неловко, но делать это на уровне маршрутизации кажется еще хуже.

Полагаю, контроллер был бы подходящим вариантом.

public ActionResult Display(long id, string title)
{
    // try and find post
    // if post is null, error

    // if post.title != title, permanent redirect to correct title
    if (title != "correct-ness-ly")
    {
        return RedirectToActionPermanent("Display", new { id, title = "correct-ness-ly" });
    }

    // permanent redirect if name doesn't match
    return new ContentResult { Content = "display post-id : {0}, {1}".FormatWith(id, title) }; // found or not
}

Есть ли "более чистый" способ сделать это?

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

1 Ответ

0 голосов
/ 14 ноября 2011

Вы не указали, какую версию IIS вы используете.Но для 7+ вы можете использовать модуль перенаправления .

Для IIS 6 было несколько сторонних модулей перенаправления URL, которые можно было использовать.

...