Я создаю веб-сайт с маршрутами, очень похожими на 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
}
Есть ли "более чистый" способ сделать это?
Обновление Я только что понял, что это заставляет меня "потерять" все возможные значения строки запроса. Помимо необходимости декларативно передавать каждый аргумент действия.