Опустить среднюю часть URL

Я занимаюсь разработкой веб-приложения для блога и хочу, чтобы ссылки на отдельные записи блога выглядели так: http://example.com/Post/2017/1/22/post-titleно в то же время, если в день более двух постов, ссылка на второй должна выглядеть так: http://example.com/Post/2017/1/22/2/another-post-title, В настоящее время у меня это реализовано следующим образом:

[AllowAnonymous]
[Route("Post/{year:int}/{month:int}/{day:int}/{*title}")]
[HttpGet]
public Task<IActionResult> GetPostByDateTitle(int year, int month, int day, string title)
{
    return this.GetPostByDate(year, month, day, 1);
}

[AllowAnonymous]
[Route("Post/{year:int}/{month:int}/{day:int}/{dayId:int}/{*title}")]
[HttpGet]
public Task<IActionResult> GetPostByDateTitle(int year, int month, int day, int dayId, string title)
{
    return this.GetPostByDate(year, month, day, dayId);
}

И код бритвы:

@if (Model.DayId == 1)
{
    <a asp-controller="Post" asp-action="GetPostByDateTitle" asp-route-year="@Model.Year" asp-route-month="@Model.Month" asp-route-day="@Model.Day" asp-route-title="@LinkTitle(Model.Title)">link</a>
}
else
{
    <a asp-controller="Post" asp-action="GetPostByDateTitle" asp-route-year="@Model.Year" asp-route-month="@Model.Month" asp-route-day="@Model.Day" asp-route-dayid="@Model.DayId" asp-route-title="@LinkTitle(Model.Title)">link</a>
}

title всегда игнорируется и существует только для того, чтобы сделать URL более читабельным, поэтому он анализируется, но игнорируется. Что я действительно хочу, это сделать dayId часть необязательна, не прибегая к двум методам и проверкам в коде Razor, выясняя, какой из них вызывать. Как я могу это сделать?

0 ответов

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