public async Task <ActionResult> DetailsById(int id = InvalidId, string slug = null) { if (id == InvalidId) { return(NoId()); } // TODO: write test for null slug slug ??= string.Empty; var tagName = await _queries.LoadTagAsync(id, t => t.UrlSlug ?? string.Empty); if (slug != tagName) { return(RedirectToActionPermanent("DetailsById", new { id, slug = tagName })); } var contract = await _queries.GetDetailsAsync(id); var prop = PageProperties; var thumbUrl = Url.ImageThumb(contract.Thumb, ImageSize.Original); if (!string.IsNullOrEmpty(thumbUrl)) { PageProperties.OpenGraph.Image = thumbUrl; } prop.Description = _markdownParser.GetPlainText(contract.Description.EnglishOrOriginal); return(RenderDetails(contract)); }