Min lösning på övningen

This commit is contained in:
2019-01-17 23:11:33 +01:00
parent b6bf2776a8
commit cd91acdf53
12 changed files with 189 additions and 7 deletions

View File

@ -24,7 +24,7 @@ namespace Vidly
routes.MapRoute( routes.MapRoute(
name: "Default", name: "Default",
url: "{controller}/{action}/{id}", url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } defaults: new { controller = "Customers", action = "Index", id = UrlParameter.Optional }
); );
} }
} }

View File

@ -1,5 +1,5 @@
body { body {
padding-top: 50px; padding-top: 70px;
padding-bottom: 20px; padding-bottom: 20px;
} }

View File

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Vidly.Models;
using Vidly.ViewModels;
namespace Vidly.Controllers
{
public class CustomersController : Controller
{
List<Customer> customers = null;
public CustomersController()
{
customers = new List<Customer>
{
new Customer {Name="Nils Persson", Id=1},
new Customer {Name="Pelle Rundström",Id=2},
new Customer {Name="Ulla Ulriksson",Id=3}
};
}
// GET: Vidly
public ActionResult Index()
{
return View();
}
public ActionResult Customers()
{
var viewModel = new CustomersViewModel()
{
Customers = customers
};
return View(viewModel);
}
[Route("Customers/Details/{nr}")]
public ActionResult Customer(int nr)
{
foreach(var cust in customers)
{
if (cust.Id == nr)
{
return View(cust);
}
}
return View(new Customer { Name="",Id=0});
}
public ActionResult Movies()
{
return View();
}
}
}

View File

@ -10,6 +10,16 @@ namespace Vidly.Controllers
{ {
public class MoviesController : Controller public class MoviesController : Controller
{ {
List<Movie> movies = null;
public MoviesController()
{
movies = new List<Movie>
{
new Movie{Name="Never say never again", Id=1},
new Movie{Name="Doctor Zivago",Id=2},
new Movie{Name="Hånkentomtarna",Id=3}
};
}
// GET: Movies // GET: Movies
public ActionResult Random() public ActionResult Random()
{ {
@ -22,7 +32,8 @@ namespace Vidly.Controllers
//var viewResult = new ViewResult(); //var viewResult = new ViewResult();
//viewResult.ViewData.Model = movie; //viewResult.ViewData.Model = movie;
var viewModel = new RandomMovieViewModel() { var viewModel = new RandomMovieViewModel()
{
Movie = movie, Movie = movie,
Customers = customers Customers = customers
}; };
@ -54,11 +65,22 @@ namespace Vidly.Controllers
return Content($"pageIndex={pageIndex}&sortBy={sortBy}"); return Content($"pageIndex={pageIndex}&sortBy={sortBy}");
} }
public ActionResult Movies()
{
var viewModel = new MoviesViewModel()
{
Movies = movies
};
return View(viewModel);
}
[Route("movies/released/{year}/{month:regex(\\d{2}):range(1,12)}")] [Route("movies/released/{year}/{month:regex(\\d{2}):range(1,12)}")]
public ActionResult ByReleaseDate(int year, int month) public ActionResult ByReleaseDate(int year, int month)
{ {
return Content(year + "/" + month); return Content(year + "/" + month);
} }
} }
} }

View File

@ -177,6 +177,7 @@
<Compile Include="Controllers\HomeController.cs" /> <Compile Include="Controllers\HomeController.cs" />
<Compile Include="Controllers\ManageController.cs" /> <Compile Include="Controllers\ManageController.cs" />
<Compile Include="Controllers\MoviesController.cs" /> <Compile Include="Controllers\MoviesController.cs" />
<Compile Include="Controllers\CustomersController.cs" />
<Compile Include="Global.asax.cs"> <Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon> <DependentUpon>Global.asax</DependentUpon>
</Compile> </Compile>
@ -187,6 +188,8 @@
<Compile Include="Models\Movie.cs" /> <Compile Include="Models\Movie.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Startup.cs" /> <Compile Include="Startup.cs" />
<Compile Include="ViewModels\CustomersViewModel.cs" />
<Compile Include="ViewModels\MoviesViewModel.cs" />
<Compile Include="ViewModels\RandomMovieViewModel.cs" /> <Compile Include="ViewModels\RandomMovieViewModel.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -247,6 +250,10 @@
<Content Include="Views\Shared\_LoginPartial.cshtml" /> <Content Include="Views\Shared\_LoginPartial.cshtml" />
<Content Include="Views\Movies\Random.cshtml" /> <Content Include="Views\Movies\Random.cshtml" />
<Content Include="Views\Shared\_NavBar.cshtml" /> <Content Include="Views\Shared\_NavBar.cshtml" />
<Content Include="Views\Customers\Index.cshtml" />
<Content Include="Views\Customers\Customers.cshtml" />
<Content Include="Views\Movies\Movies.cshtml" />
<Content Include="Views\Customers\Customer.cshtml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="App_Data\" /> <Folder Include="App_Data\" />

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Vidly.Models;
namespace Vidly.ViewModels
{
public class CustomersViewModel
{
public List<Customer> Customers { get; set; }
}
}

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Vidly.Models;
namespace Vidly.ViewModels
{
public class MoviesViewModel
{
public List<Movie> Movies { get; set; }
}
}

View File

@ -0,0 +1,10 @@
@model Vidly.Models.Customer
@{
ViewBag.Title = "Customer";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Customer</h2>
<h1>@Model.Name - @Model.Id</h1>

View File

@ -0,0 +1,23 @@
@model Vidly.ViewModels.CustomersViewModel
@{
ViewBag.Title = "Customers";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Customers</h2>
@if (Model.Customers.Count == 0)
{
<text>No one has rented this movie before.</text>
}
else
{
<ul>
@foreach (var customer in Model.Customers)
{
@*<li>@customer.Name</li>*@
<li>@Html.ActionLink(@customer.Name, "Details", "Customers", new { id = @customer.Id },null)</li>
}
</ul>
}

View File

@ -0,0 +1,11 @@

@{
ViewBag.Title = "Vidly";
}
<div class="jumbotron">
<h1>V i d l y</h1>
<p class="lead">Vidly is a great video rental system built in MVC5 with entity framework, Razorviews and Javascript.</p>
@*<p><a href="https://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>*@
</div>

View File

@ -0,0 +1,23 @@
@model Vidly.ViewModels.MoviesViewModel
@{
ViewBag.Title = "Movies";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Movies</h2>
@if (Model.Movies.Count == 0)
{
<text>No one has rented this movie before.</text>
}
else
{
<ul>
@foreach (var movie in Model.Movies)
{
<li>@movie.Name</li>
@*<li>@Html.ActionLink(@customer.Name, "Details", "Customers", new { id = @customer.Id }, null)</li>*@
}
</ul>
}

View File

@ -4,13 +4,13 @@
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
@Html.ActionLink("My Web Portal", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) @Html.ActionLink("Vidly", "Index", "Customers", new { area = "" }, new { @class = "navbar-brand" })
<div class="navbar-collapse collapse" id="navbarSupportedContent"> <div class="navbar-collapse collapse" id="navbarSupportedContent">
<ul class="nav navbar-nav mr-auto"> <ul class="nav navbar-nav mr-auto">
<li class="nav-item">@Html.ActionLink("Home", "Index", "Home", null, new { @class = "nav-link" })</li> <li class="nav-item">@Html.ActionLink("Customers", "Customers", "Customers", null, new { @class = "nav-link" })</li>
<li class="nav-item">@Html.ActionLink("About", "About", "Home", null, new { @class = "nav-link" })</li> <li class="nav-item">@Html.ActionLink("Movies", "Movies", "Movies", null, new { @class = "nav-link" })</li>
<li class="nav-item">@Html.ActionLink("Contact", "Contact", "Home", null, new { @class = "nav-link" })</li> @*<li class="nav-item">@Html.ActionLink("Contact", "Contact", "Home", null, new { @class = "nav-link" })</li>*@
</ul> </ul>
@Html.Partial("_LoginPartial") @Html.Partial("_LoginPartial")
</div> </div>