diff --git a/Controllers/newsController.cs b/Controllers/newsController.cs index 8299bed..e6cc015 100644 --- a/Controllers/newsController.cs +++ b/Controllers/newsController.cs @@ -19,10 +19,29 @@ namespace WebApplication1.Controllers // GET: news public ActionResult Index() { - var news = db.news.ToList(); - var users = db.users.ToList(); - var models = new Tuple, List>(news, users); - return View(db.news.ToList()); + var models = (from user in db.users // Access Users DbSet + join news in db.news on user.ID equals news.userID into newsGroup // Join News DbSet + from news in newsGroup.DefaultIfEmpty() // Left outer join + where news != null // Filter based on existence of news record + select new newsModel + { + DisplayName = user != null ? user.displayname : null, + NewsID = news.ID, // Use null-conditional operator for missing news + Title = news.title, + Image = news.image, + category = news.cat, + tag = news.tag, + date = news.publishDate, + views = news.views + }).ToList(); + + + return View(models); + } + // GET: news + public ActionResult Latest() + { + return View(db.news.OrderByDescending(v => v.views).ToList()); } // GET: news/Details/5 @@ -38,7 +57,21 @@ namespace WebApplication1.Controllers return HttpNotFound(); } var user = db.users.Find(news.userID); - // var model = new Tuple(news,user); + ViewBag.user = user; + news.views += 1; + db.SaveChanges(); + /* + var key = Request.ServerVariables["REMOTE_ADDR"]; + var now = DateTime.UtcNow; + + if (now - View.LastVisited > _timeLimit) + { + pageView.LastVisited = now; + _pageViews[key] = pageView; + return true; // View counted + } + return false; // View within time limit, not counted + */ return View(news); } diff --git a/Models/newsModel.cs b/Models/newsModel.cs new file mode 100644 index 0000000..db2eaab --- /dev/null +++ b/Models/newsModel.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace WebApplication1.Models +{ + public class newsModel + { + public string DisplayName { get; set; } + public int NewsID { get; set; } + public string Title { get; set; } + public string Image { get; set; } + public string category { get; set; } + public string tag { get; set; } + public DateTime? date { get; set; } + public int? views { get; set; } + } +} \ No newline at end of file diff --git a/Views/news/Details.cshtml b/Views/news/Details.cshtml index 501c28d..13d6a2a 100644 --- a/Views/news/Details.cshtml +++ b/Views/news/Details.cshtml @@ -2,6 +2,7 @@ @{ ViewBag.Title = "Details"; + }

Details

@@ -23,8 +24,7 @@
- - @Html.DisplayFor(model => model.image) +
@@ -72,7 +72,7 @@
- @Html.DisplayFor(model => model.userID) + @ViewBag.user.displayname
diff --git a/Views/news/Index.cshtml b/Views/news/Index.cshtml index 1dd3a67..2db8f59 100644 --- a/Views/news/Index.cshtml +++ b/Views/news/Index.cshtml @@ -1,4 +1,7 @@ -@model IEnumerable +@using WebApplication1.Models +@model IEnumerable + + @{ ViewBag.Title = "Index"; } @@ -11,46 +14,53 @@ + -@foreach (var item in Model) { - - - - - - - - -} + @foreach (var item in Model) + { + + + + + + + + + + }
- @Html.DisplayNameFor(model => model.title) + title - @Html.DisplayNameFor(model => model.cat) + category - @Html.DisplayNameFor(model => model.publishDate) + tag - @Html.DisplayNameFor(model => model.userID) + publish date - @Html.DisplayNameFor(model => model.views) + publisher + + Views
- @Html.DisplayFor(modelItem => item.title) - - @Html.DisplayFor(modelItem => item.cat) - - @Html.DisplayFor(modelItem => item.publishDate) - - @Html.DisplayFor(modelItem => item.userID) - - @Html.DisplayFor(modelItem => item.views) - - @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | - @Html.ActionLink("Details", "Details", new { id=item.ID }) | - @Html.ActionLink("Delete", "Delete", new { id=item.ID }) -
+ @Html.DisplayFor(modelItem => item.Title) + + @Html.DisplayFor(modelItem => item.category) + + @Html.DisplayFor(modelItem => item.tag) + + @Html.DisplayFor(modelItem => item.date) + + @Html.DisplayFor(modelItem => item.DisplayName) + + @Html.DisplayFor(modelItem => item.views) + + @Html.ActionLink("Edit", "Edit", new { id = item.NewsID }) | + @Html.ActionLink("Details", "Details", new { id = item.NewsID }) | + @Html.ActionLink("Delete", "Delete", new { id = item.NewsID }) +
diff --git a/WebApplication1.csproj b/WebApplication1.csproj index c8c5b71..e5d1016 100644 --- a/WebApplication1.csproj +++ b/WebApplication1.csproj @@ -153,6 +153,7 @@ Model1.tt +