View blog posts

This commit is contained in:
Robert Marshall 2019-04-28 11:12:52 +01:00
parent b8f371e3e8
commit 3064dd8d25
5 changed files with 16 additions and 13 deletions

View file

@ -28,9 +28,9 @@ namespace Website.Controllers
return View(model); return View(model);
} }
public async Task<IActionResult> View(int id) public async Task<IActionResult> Entry(string url)
{ {
var post = await _repo.GetPostAsync(id); var post = await _repo.GetPostByUrlAsync(url);
var model = new BlogPostViewModel(post); var model = new BlogPostViewModel(post);
return View(model); return View(model);
} }

View file

@ -13,11 +13,11 @@ namespace Website.Data
public BlogRepository(IDatabaseProvider dbProvider) => _dbProvider = dbProvider; public BlogRepository(IDatabaseProvider dbProvider) => _dbProvider = dbProvider;
public async Task<BlogPost> GetPostAsync(int id) { public async Task<BlogPost> GetPostByUrlAsync(string url) {
const string query = "SELECT * FROM blog_posts WHERE post_id=@id AND post_deleted=0"; const string query = "SELECT * FROM blog_posts WHERE post_url=@url AND post_deleted=0";
using (var connection = _dbProvider.NewConnection()) { using (var connection = _dbProvider.NewConnection()) {
connection.Open(); connection.Open();
var result = await connection.QueryAsync<BlogPostState>(query, new{id}); var result = await connection.QueryAsync<BlogPostState>(query, new{url});
return new BlogPost(result.First()); return new BlogPost(result.First());
} }
} }

View file

@ -63,7 +63,8 @@ namespace Website
new { controller = "Blog", action = "Page", page = 1 }); new { controller = "Blog", action = "Page", page = 1 });
routes.MapRoute( routes.MapRoute(
name: "blogView", name: "blogView",
template: "blog/view/{url}"); template: "blog/view/{url}",
new { controller = "Blog", action = "Entry"});
routes.MapRoute( routes.MapRoute(
name: "default", name: "default",
template: "{controller=Home}/{action=Index}/{id?}"); template: "{controller=Home}/{action=Index}/{id?}");

View file

@ -0,0 +1,9 @@
@model BlogPostViewModel;
@{
ViewData["Title"] = Model.Title;
}
@Html.Raw(Model.Content)
<small>Posted on @Model.Timestamp.ToString()</small>

View file

@ -1,7 +0,0 @@
@model BlogPostViewModel;
@{
ViewData["Title"] = "Blog";
}
@Model.Title