+ All Categories
Home > Documents > Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie...

Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie...

Date post: 20-Jun-2020
Category:
Upload: others
View: 15 times
Download: 0 times
Share this document with a friend
22
Transcript
Page 1: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje
Page 2: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and Knockout.js

Tłumaczenie: Piotr Pilch

ISBN: 978-83-283-2050-5

© 2016 Helion S.A.

Authorized Polish translation of the English edition of ASP.NET MVC 5 with Bootstrap and Knockout.js, ISBN 9781491914397 © 2015 Jamie Munro.

This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/aspboo.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/aspbooMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

5

Spis treści

Przedmowa ................................................................................................................ 9

Wprowadzenie .......................................................................................................... 13

Część I. Pierwsze kroki ................................................................................ 15

1. Wprowadzenie do wzorca architektury MVC ............................................................... 17Tworzenie pierwszego projektu 17Analizowanie kontrolera HomeController 19Analizowanie widoków 21Struktura adresu URL 23Podsumowanie 24

2. Wprowadzenie do środowiska Bootstrap ................................................................... 25Analizowanie menu domyślnego 25Menu z elementami rozwijanymi i polem wyszukiwania 28Przyciski 30Alerty 32Kompozycje 32Podsumowanie 33

3. Wprowadzenie do biblioteki Knockout.js ................................................................... 35Instalowanie biblioteki Knockout.js 35Prosty przykład 36Czym jest MVVM? 39Tworzenie modeli widoku 40Podsumowanie 42

Poleć książkęKup książkę

Page 4: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

6 Spis treści

4. Praca z bazą danych .................................................................................................. 43Wprowadzenie do środowiska Entity Framework 43Przepływ Code First 45Przepływ Database First 48Tworzenie danych testowych 51Podsumowanie 54

Część II. Praca z danymi ................................................................................55

5. Tworzenie listy, sortowanie i stronicowanie tabel ...................................................... 57Użycie mechanizmu scaffolding dla modelu Author 57Sortowanie autorów 63Stronicowanie autorów 68Podsumowanie 72

6. Użycie formularzy ..................................................................................................... 73Integrowanie biblioteki Knockout.js z formularzem 73Współużytkowanie widoku i modelu widoku 79Usuwanie przy użyciu okna modalnego 85Wyświetlanie pustych tabel 89Podsumowanie 91

7. Serwerowe modele widoku ....................................................................................... 93Dlaczego tworzone są serwerowe modele widoku? 93Model widoku autorów 94Aktualizowanie listingu autorów 95Aktualizowanie formularza dodawania/edytowania 97Aktualizowanie okna dialogowego usuwania 98Podsumowanie 99

8. Wprowadzenie do komponentu Web API ................................................................. 101Instalowanie komponentu Web API 101Aktualizowanie listy autorów 103Aktualizowanie formularza służącego do dodawania/edytowania danych autorów 111Podsumowanie 114

Poleć książkęKup książkę

Page 5: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Spis treści 7

Część III. Architektura kodu .........................................................................115

9. Tworzenie filtrów globalnych ...................................................................................117Filtry uwierzytelniania 117Filtry autoryzacji 118Filtry akcji 118Filtry wyniku 118Filtry wyjątku 118Globalne sprawdzanie poprawności komponentu Web API 118Automatyczne odwzorowywanie przy użyciu filtru wyniku 122Obsługa błędów komponentu Web API 125Obsługa błędów wzorca MVC 127Podsumowanie 130

10. Dodawanie uwierzytelniania i autoryzacji .................................................................131Przegląd uwierzytelniania 131Przegląd procesu autoryzacji 132Implementowanie filtru uwierzytelniania 133Implementowanie filtru autoryzacji 140Podsumowanie 143

11. Routing adresów URL przy użyciu atrybutów .............................................................145Podstawy routingu za pomocą atrybutów 145Prefiksy trasy 148Ograniczenia routingu 149Podsumowanie 152

12. Złożony model i prosty kontroler ..............................................................................153Separacja zagadnień 153Usługi i zachowania 156Podsumowanie 162

Część IV. Praktyczny przykład ......................................................................163

13. Tworzenie koszyka zakupów ....................................................................................165Wymagania koszyka zakupów 165Projekt koszyka zakupów 166Tworzenie pakietów i minifikacja kodu JavaScript 166Podsumowanie 168

Poleć książkęKup książkę

Page 6: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

8 Spis treści

14. Budowanie modelu danych ..................................................................................... 169Modele przepływu Code First 169Definiowanie kontekstu DbContext i inicjowanie danych 172Modele widoku 175Podsumowanie 177

15. Implementowanie układu ....................................................................................... 179Układ współużytkowany 179Podsumowanie koszyka zakupów 180Menu kategorii 187Podsumowanie 190

16. Listy książek ............................................................................................................ 191Strona główna 191Wyróżnione książki 192Książki filtrowane według kategorii 194Podsumowanie 197

17. Dodawanie pozycji do koszyka ................................................................................. 199Szczegóły dotyczące książki 199Komponenty i wiązania niestandardowe 203Zapisywanie pozycji koszyka 209Podsumowanie 211

18. Aktualizowanie i usuwanie pozycji koszyka .............................................................. 213Szczegóły koszyka 213Użycie biblioteki Knockout.js do obsługi szczegółów koszyka 216Finalizowanie koszyka zakupów 220Podsumowanie 223

Skorowidz ............................................................................................................... 225

Poleć książkęKup książkę

Page 7: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

17

ROZDZIAŁ 1.

Wprowadzenie do wzorca architektury MVC

MVC to wzorzec architektury. Skrót wywodzi się od terminu Model-View-Controller. Moją definicjęwzorca MVC mogę podsumować w następujący sposób:

Model zarządza danymi aplikacji. Każdy model reprezentuje przeważnie jedną tabelę lub więk-szą liczbę tabel w bazie danych.

Widok zawiera wizualną reprezentację aplikacji. W witrynach internetowych osiąga się to zwyklez wykorzystaniem języków HTML i JavaScript oraz arkuszy stylów CSS.

Kontroler pełni funkcję pośrednika między modelem i widokiem. Typowy kontroler będzieżądać danych od modelu i przekazywać je widokowi, aby użyć ich podczas wyświetlania danych.W czasie zapisywania danych kolejność działań byłaby odwrotna. Kontroler odebrałby danez widoku i przekazał je modelowi w celu ich zapisania.

ASP.NET MVC 5 to środowisko implementujące wzorzec architektury MVC.

Termin MVC będzie wielokrotnie powtarzany w książce. W większości sytuacji będę się odwoływaćdo środowiska MVC implementującego wzorzec MVC.

Tworzenie pierwszego projektuOprogramowanie Visual Studio oferuje różne szablony ułatwiające rozpoczęcie projektu. W książceskoncentrowałem się na dwóch konkretnych szablonach: MVC i Web API.

Szablon MVC umożliwia tworzenie aplikacji internetowych, które korzystają z wzorca architek-tury Model-View-Controller. Szablon ten zostanie bardziej szczegółowo omówiony w książce.

Szablon Web API pozwala na tworzenie aplikacji internetowych RESTful. REST to kolejny typwzorca architektury oprogramowania, powszechnie wykorzystywany do tworzenia interfejsówAPI lub aplikacji klient-serwer. Szablon Web API z łatwością integrowany jest z wzorcem archi-tektury MVC, co umożliwia ponowne wykorzystanie kodu w projektach opartych na szablonachMVC i Web API. Zademonstruję to w dalszej części książki.

W ramach pierwszego przykładu skupię się na szablonie MVC. W oknie Visual Studio Start Pagelub z menu File/New wybierz opcję Project. Jak widać, dostępnych jest wiele różnych typów pro-jektów do utworzenia. W menu Templates rozwiń pozycję Visual C#. Z menu wybierz opcję Web.

Poleć książkęKup książkę

Page 8: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

18 Rozdział 1. Wprowadzenie do wzorca architektury MVC

W swojej domyślnej instalacji dysponuję tylko jedną opcją aplikacji internetowej ASP.NET. Wy-bierz ją i wprowadź nazwę w udostępnionym polu. Wpisałem nazwę BootstrapIntroduction (wpro-wadzenie do środowiska Bootstrap).

Po wybraniu nazwy projektu kliknij przycisk OK. Zostanie zaprezentowanych kilka różnych sza-blonów aplikacji internetowych. Wybierz szablon wzorca MVC, a zauważysz dodatkowe opcjeumożliwiające dołączenie interfejsu Web API oraz projektu testu jednostkowego. Na potrzebyprzykładu opcje pozostawię niezaznaczone.

W wypadku szablonu MVC dostępne są też cztery różne opcje uwierzytelniania:

No AuthenticationWszystkie strony witryny internetowej będą publicznie dostępne.

Individual User AccountsOpcja sprawia, że aplikacja internetowa umożliwi użytkownikom rejestrowanie się i logowanie zapomocą utworzonej nazwy użytkownika i hasła. Opcja zapewnia też kilka różnych wariantówlogowania w serwisach społecznościowych, w tym na Facebooka i Twittera, na konto Googlei konto Microsoft. W każdym z tych wypadków informacje będą przechowywane w automatycz-nie tworzonej bazie danych członków.

Work And School AccountsOpcja powoduje, że aplikacja internetowa zostanie zintegrowana z usługami Active Directory,Microsoft Azure Active Directory lub Office 365 w celu zabezpieczenia stron w obrębie aplikacji.

Windows AuthenticationDzięki tej opcji aplikacja internetowa jest zabezpieczana za pomocą modułu Windows Authen-tication IIS. Taki wariant jest powszechnie stosowany w wypadku aplikacji intranetowych, w któ-rych wszystkie konta użytkowników istnieją na serwerze WWW obsługującym aplikację.

Na potrzeby omawianego przykładu opcję zabezpieczeń zmieniłem na No Authentication (rysunek 1.1).

Gdy będziesz gotowy do zakończenia tworzenia projektu, kliknij przycisk OK. W zależności od wy-dajności komputera minutę albo dwie może potrwać dla projektu proces konfigurowania i wstępnegoładowania wielu przydatnych plików i folderów, które ułatwią rozpoczęcie pracy.

Po zakończeniu procesu możliwe będzie wybranie opcji Start Debugging z menu Debug. Spowodujeona uruchomienie nowej aplikacji internetowej w domyślnej przeglądarce internetowej.

Po przyjrzeniu się folderom zauważysz, że z każdą rolą we wzorcu MVC powiązany jest osobny folder.Folder Views zawiera zwykle podfolder o nazwie zgodnej z nazwą kontrolera, ponieważ w folderzetym znajduje się zwykle kilka widoków, aby w prosty sposób umożliwić uporządkowanie plików.

Jeśli rozwiniesz folder Views, ujrzysz dwa podfoldery: Home i Shared. Folder Home dopasowany jestdo klasy HomeController istniejącej w folderze Controllers. Folder Shared jest używany na potrzebywidoków zawierających wspólny kod innych widoków.

Widoki te obejmują układy lub widoki częściowe. Układy to specjalne widoki zawierające na każdejstronie widok wielokrotnego użycia. Widok częściowy jest widokiem do wielokrotnego zastosowania,posiadającym podzbiór danych, które mogą być dołączone do jednej strony lub ich większej liczby.

Poleć książkęKup książkę

Page 9: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Analizowanie kontrolera HomeController 19

Rysunek 1.1. Tworzenie projektu

Rysunek 1.2 prezentuje zrzut ekranu domyślnej witryny internetowej tworzonej z wykorzystaniemnowego projektu MVC. Menu zawiera trzy odnośniki: Strona główna, Informacje o i Kontakt.Pamiętajmy o nich, rozpoczynając poznawanie kodu.

Analizowanie kontrolera HomeControllerZacznijmy od przyjrzenia się kontrolerowi. W folderze Controllers znajduje się plik o nazwie Home-Controller.cs, którego zawartość powinna być podobna do zaprezentowanej w przykładzie 1.1.Przykład 1.1. Plik HomeController.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace BootstrapIntroduction.Controllers{ public class HomeController : Controller { public ActionResult Index() { return View(); }

Poleć książkęKup książkę

Page 10: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

20 Rozdział 1. Wprowadzenie do wzorca architektury MVC

Rysunek 1.2. Domyślna witryna internetowa

public ActionResult About() { ViewBag.Message = "Strona z opisem aplikacji"; return View(); } public ActionResult Contact() { ViewBag.Message = "Strona z informacjami kontaktowymi"; return View(); } }}

HomeController to klasa zawierająca trzy metody: Index, About i Contact. W terminologii wzorca MVCsą one często określane mianem akcji. Akcja o nazwie Index to zwykle główny punkt wejścia kontrole-ra. Zauważ, że akcje About i Contact dopasowują nazwy utworzonych odnośników — wyjątkiemjest akcja Home, ponieważ odnosi się ona do akcji Index.

Wszystkie kontrolery w aplikacji MVC będą rozszerzać podstawową klasę Controller. Każda metodaw klasie zwraca typ o nazwie ActionResult. W większości sytuacji typ ten będzie zwracany przez wszystkieużywane akcje. W zamieszczonych dalej przykładach zostaną objaśnione inne zwracane typy.

Akcje About i Contact wprowadzają też właściwość ViewBag klasy Controller. Właściwość ta umoż-liwia dynamiczne przekazywanie danych widokowi. Przykład 1.2 zademonstruje sposób jej użyciaw widoku.

Właściwość ViewBagWłaściwość ViewBag pozwala na współużytkowanie danych między kontrolerami i widoka-mi. Zmienna ta jest definiowana jako typ dynamiczny i nie posiada żadnych predefiniowanychwłaściwości. Dzięki temu możliwe jest podanie dowolnej nazwy właściwości, która może zawieraćdowolny typ danych.

Poleć książkęKup książkę

Page 11: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Analizowanie widoków 21

I wreszcie — każda akcja jest zwracana z wywołaniem funkcji View. Metoda ta istnieje w klasieController, rozszerzanej przez wszystkie kontrolery. W wyniku jej zastosowania ładowany jest widoki wykonywany jest kod Razor zawarty w pliku .cshtml. W przykładzie 1.1 nie są przekazywane funkcjiżadne parametry, co oznacza, że domyślnie wzorzec MVC będzie szukać widoku o takiej samej nazwiejak nazwa funkcji.

Analizowanie widokówPo rozwinięciu zawartości folderu Views widoczny jest podfolder o nazwie Home. Znajdują się w nimtrzy pliki: About.cshtml, Contact.cshtml i Index.cshtml. Nazwa każdego pliku jest zgodna z nazwąjego akcji w kontrolerze. Rozszerzenie .cshtml to skrót od C# HTML. Widoki te umożliwiają użycieskładni silnika Razor (http://bit.ly/razor-syntax), która stanowi kombinację języków HTML i C#.Daje to możliwość implementowania typowych technik tworzenia kodu, takich jak instrukcje wa-runkowe, pętle i zwracanie danych dynamicznych (na przykład wcześniej wspomniana właściwośćViewBag).

W przykładzie 1.2 zaprezentowano zawartość pliku About.cshtml domyślnej strony tworzonejwraz z projektem. Elementy korzystające ze składni silnika Razor zaczynają się od symbolu @. W połą-czeniu ze znakiem nawiasu klamrowego { pozwala to na stosowanie wielowierszowego kodu C#.W tym przykładzie dla właściwości ViewBag ustawiany jest tytuł strony (wartość "Informacje o").Właściwość Title powiązana z właściwością ViewBag jest powszechnie używana w układzie współ-użytkowanym do ustawiania tytuły strony wyświetlanej przez przeglądarkę. W omawianym przykła-dzie właściwość Title jest też umieszczona w znaczniku h2.Przykład 1.2. Plik About.cshtml

@{ ViewBag.Title = "Informacje o";}<h2>@ViewBag.Title.</h2><h3>@ViewBag.Message</h3><p>U yj tego obszaru do udost pnienia dodatkowych informacji.</p>

Oprócz właściwości Title widoczna jest właściwość Message, powiązana w znaczniku h3 z właści-wością ViewBag. Jak już wspomniano, właściwość Message została ustawiona w akcji kontrolera dlametod About i Contact.

Jest to znakomity przykład tego, jak kod Razor jest wstawiany do standardowego kodu HTML w celuwygenerowania treści dynamicznej w momencie wykonywania operacji renderowania w przeglądarce.

W czasie przeglądania strony Informacje o możesz zauważyć, że zawiera ona znacznie więcej koduHTML niż tylko kilka elementów. Jest to wynikiem użycia układu współużytkowanego. Domyśl-nie wszystkie widoki są umieszczane w obrębie szablonu domyślnego, który znajduje się w innymfolderze, o nazwie Shared, umieszczonym w folderze Views. Jeśli rozwiniesz folder Shared, ujrzyszplik _Layout.cshtml (przykład 1.3).Przykład 1.3. Plik _Layout.cshtml

<!DOCTYPE html><html><head> <meta charset="utf-8" />

Poleć książkęKup książkę

Page 12: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

22 Rozdział 1. Wprowadzenie do wzorca architektury MVC

<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@ViewBag.Title – Moja aplikacja ASP.NET</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")</head><body> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> @Html.ActionLink("Nazwa aplikacji", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Strona g ówna", "Index", "Home")</li> <li>@Html.ActionLink("Informacje o", "About", "Home")</li> <li>@Html.ActionLink("Kontakt", "Contact", "Home")</li> </ul> </div> </div> </div> <div class="container body-content"> @RenderBody() <hr /> <footer> <p>&copy; @DateTime.Now.Year – Moja aplikacja ASP.NET</p> </footer> </div> @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false)</body></html>

Układ domyślny zawiera kod HTML wielokrotnego użytku, pojawiający się na każdej stronie w obrę-bie witryny (są to takie elementy jak tytuł strony, nagłówek, stopka, arkusze CSS czy kod JavaScript).

Renderowany widok wstawiany jest do tego układu w momencie wywołania metody RenderBody za po-średnictwem kodu Razor.

W wypadku tego układu współużytkowanego ma miejsce wiele innych rzeczy. Układ korzystaz kilku klas pomocniczych zapewnianych przez środowisko MVC, takich jak klasa HtmlHelper(http://bit.ly/htmlhelper) — do tworzenia odnośników, Scripts (http://bit.ly/scripts-render) — dodołączania plików JavaScript, Styles (http://bit.ly/styles-render) — do dołączania plików CSS, a tak-że klasa RenderSection, która umożliwia widokom wskazywanie konkretnej treści do wstawieniaw określonym miejscu układu współużytkowanego. Zostanie to zaprezentowane w rozdziale 2.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Struktura adresu URL 23

Struktura adresu URLW momencie uruchomienia domyślnej witryny internetowej zostały utworzone następujące trzyodnośniki:

Strona główna. Kieruje do głównego katalogu witryny (/).

Informacje o. Kieruje do katalogu /Home/About.

Kontakt. Kieruje do katalogu /Home/Contact.

Odnośniki te działają, ponieważ na początku tworzenia projektu MVC odpowiednio skonfigurowanotrasę domyślną. Trasy umożliwiają witrynie internetowej informowanie wzorca MVC o tym, jakpowinien odwzorować adres URL na konkretny kontroler i akcję w projekcie.

Trasy są konfigurowane w pliku App_Start/RouteConfig.cs. Przykład 1.4 prezentuje trasę domyślnąskonfigurowaną z wykorzystaniem nowego projektu MVC.Przykład 1.4. Trasa domyślna

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

W przykładowej konfiguracji trasy definiowane są następujące trzy istotne elementy:

Nazwa. Każda trasa musi mieć unikatową nazwę.

Adres URL. Jest to względny adres URL występujący po nazwie domeny witryny internetowej.Adres URL może zawierać kombinację statycznego tekstu ze zmiennymi.

Konfiguracja domyślna. Jeśli nie zapewniono dowolnej ze zmiennych w adresie URL, mogąbyć dla nich ustawione wartości domyślne.

Jeśli ponownie przeanalizujemy wymienione wcześniej odnośniki, to dojdziemy do wniosku, że ichdziałanie wynika z następujących powodów:

W wypadku przejścia do katalogu / adres URL nie zawiera żadnego kontrolera, akcji ani identyfi-katora. Ustawiane wartości domyślne wskazują, że zostanie użyty kontroler HomeControlleri akcja Index, a identyfikator nie musi istnieć.

W wypadku przejścia do katalogów /Home/About i /Home/Contact nie są używane żadnewartości domyślne, ponieważ w adresie URL są określone zarówno kontroler, jak i akcja.

Okazuje się, że odnośnik Strona główna może być też dostępny za pośrednictwem katalogów/Home i /Home/Index. Gdy jednak adresy URL są tworzone w obrębie widoku, wzorzec MVCwybiera spośród nich najkrótszy i najwłaściwszy adres URL, czyli po prostu katalog /.

W wypadku takiej trasy możesz utworzyć nowy kontroler i (lub) akcję, a ponadto trasa może byćautomatycznie dostępna przy użyciu jej nazwy i nazwy akcji.

Poleć książkęKup książkę

Page 14: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

24 Rozdział 1. Wprowadzenie do wzorca architektury MVC

PodsumowanieJeśli dopiero rozpoczynasz przygodę z wzorcem architektury MVC, treść tego rozdziału możesprawiać na Tobie przytłaczające wrażenie. Predefiniowane szablony MVC w środowisku VisualStudio są dość rozbudowane i zapewniają projektantom sporą „zaliczkę” w momencie realizowaniaprojektów.

Dlatego też trudno omówić każdy szczegół dotyczący tego, co jest tworzone. W tym wprowadzającymrozdziale przedstawiłem wiele podstawowych funkcji, które umożliwią rozpoczęcie pracy.

Istnieje znacznie więcej szczegółów do omówienia, związanych z wzorcem architektury Model-View--Controller. W kolejnych rozdziałach książki, prezentujących bardziej zaawansowane zagadnienia,szczegóły te będą w znacznym stopniu przybliżane.

Poleć książkęKup książkę

Page 15: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

225

Skorowidz

Aadres

IPsprawdzanie poprawności, 141wyodrębnianie, 141

URL, 23akcja Index, 149aktualizowanie

formularza, 97, 111listingu, 95listy, 103okna dialogowego usuwania, 98pozycji koszyka, 213środowiska Bootstrap, 73

alerty, 32analizowanie

kontrolera HomeControlle, 19menu domyślnego, 25widoków, 21

architektura kodu, 115ASP.NET, 131automatyczne

generowanie klasy, 51odwzorowywanie, 122

autoryzacja, 131, 132

Bbaza danych, 43biblioteka

jQuery, 168Knockout.js, 35

błądklienta, 114serwera, 114

Bootstrap, 25budowanie modelu danych, 169

CCRUD, 12

DDAL, Data Access Layer, 46dane, 55

testowe, 51definiowanie

kontekstu, 172menu, 25odnośników menu, 26trasy, 146

diagramcyklu życia żądania, 133funkcji OnAuthentication, 132

dodawanieautoryzacji, 142pozycji do koszyka, 199

dołączanie biblioteki Knockout.js, 36dostęp do

bazy danych, 43właściwości obserwowalnych, 77

EEF, Entity Framework, 43element

@RenderSection, 37li, 29

elementy rozwijane, 28Entity Framework, 43enumerator SortOrder, 64

Poleć książkęKup książkę

Page 16: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

226 Skorowidz

Ffiltrowanie według kategorii, 194filtry

akcji, 118autoryzacji, 118, 140globalne, 117uwierzytelniania, 117, 131, 133wyjątku, 118, 125wyniku, 118, 122

finalizowanie koszyka zakupów, 220format JSON, 205formularz, 73

dodawania/edytowania, 97, 111wyszukiwania, 29z obsługą błędów, 76

funkcjaAddToCart, 210Application_Start, 53Delete, 99foreach, 61Get, 103, 189GetByCartIdAndBookId, 211Index, 105, 214OnActionExecuted, 120OnActionExecutedAsync, 120OnActionExecuting, 119OnActionExecutingAsync, 119OnAuthentication, 131, 134OnAuthenticationChallenge, 131, 136pureComputed, 186SaveChanges, 222setTimout, 76sortEntitiesBy, 108, 110successfulDelete, 219ToList, 61UpdateCartItem, 222upsertCartItem, 205validateAndSave, 111

funkcje niestandardowe, 186

Ggenerowanie klasy, 51

Hhasło, 135

IIDE, Integrated Development Environment, 13implementowanie

filtru autoryzacji, 140filtru uwierzytelniania, 133układu, 179

informacje konfiguracyjne, 57inicjowanie danych, 172instalowanie

biblioteki Knockout.js, 35komponentu Web API, 101narzędzia Fiddler, 121

Kkarta Composer, 121klasa

AuthenticatedUsers, 138, 139AuthorsController, 60AuthorService, 151, 158BasicAuthorizationAttribute, 140BasicChallengeActionResult, 137BookContext, 46BookInitializer, 53BookService, 192, 196, 200BundleConfig, 167CartItemService, 222CartService, 181CategoryService, 188DataInitialization, 172DbContext, 46ExceptionFilterAttribute, 125FilterAttribute, 130FilterConfig, 129GenerateResultListFilterAttribute, 122, 123HtmlHelper, 107HtmlHelperExtensions, 67–70kontekstu danych, 57modal, 89modelu, 57MvcHtmlString, 67navbar, 28navbar-nav, 27nav-pills, 27OnApiExceptionAttribute, 125OnExceptionAttribute, 127, 128PagingService, 108, 110QueryOptions, 64–66

Poleć książkęKup książkę

Page 17: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Skorowidz 227

QueryOptionsCalculator, 157ResultList, 124RouteConfig, 145ShoppingCartContext, 172ValidationActionFilterAttribute, 119WebApiConfig, 120, 126

Knockout.js, 35formularze, 73instalacja, 35obsługa szczegółów koszyka, 216

kody statusu HTTP, 114komponent Web API, 101komponenty, 203kompozycje, 32komunikaty alertów, 32konfiguracja domyślna, 23kontekst DbContext, 172kontroler, 17, 154

AuthorsController, 58, 103, 124, 142, 150, 161BooksController, 147, 192, 195, 199CartItemsController, 209CartsController, 181, 213CategoriesController, 188HomeController, 19, 38, 146wzorca MVC, 104

koszyk zakupów, 165aktualizowanie pozycji, 213dodawanie pozycji, 199finalizowanie, 220lista kategorii, 190listy książek, 191podsumowanie, 180projekt, 166usuwanie pozycji, 213użycie biblioteki Knockout.js, 216wymagania, 165zapisywanie pozycji, 209

Lleniwe ładowanie, 46lista, 57

autorów, 63listing, 95listy książek, 191

filtrowanie według kategorii, 194strona główna, 191wyróżnione książki, 192

logika biznesowa, 154

Łłańcuch

ograniczeń, 149połączenia BookContext, 47

Mmechanizm scaffolding, 57menu

domyślne, 25elementy rozwijane, 28kategorii, 187pole wyszukiwania, 28rozwijane, 28zwijane, 26

metoda Post, 210minifikacja kodu JavaScript, 166model, 17

model Author, 45, 57, 74, 84, 170AuthorFormViewModel, 74Book, 45, 170Cart, 171CartItem, 171Category, 170Person, 41QueryOptions, 64ViewModel, 40widoku, 40, 79, 93, 175

AuthorFormViewModel, 82AuthorIndexViewModel, 87, 111AuthorViewModel, 94, 175BookDetailViewModel, 202BookViewModel, 175CartDetailViewModel, 216, 217CartItemViewModel, 177, 204CartSummaryViewModel, 184, 208, 219CartViewModel, 176CategoryViewModel, 176ResultList, 104ReturnData, 126

modele przepływu Code First, 169MVC, Model-View-Controller, 17MVVM, Model-View-ViewModel, 35, 39

Poleć książkęKup książkę

Page 18: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

228 Skorowidz

Nnarzędzie

Fiddler, 121NuGet Package Manager, 35

nazwa użytkownika, 135

Oobiekt

BundleConfig, 187ViewModel, 62

obiekty inicjujące bazę danych, 53obsługa

błędów, 76komponentu Web API, 125wzorca MVC, 127

szczegółów koszyka, 216oczyszczanie danych, 154oddzielanie kodu, 153odnośniki

menu, 26przycisków, 71

ograniczenia routingu, 149ograniczenie, 150okno

Add Connection, 48Add Controller, 57modalne, 85

opcja Use a layout page, 57opcje uwierzytelniania, 18operacje CRUD, 12optymalizacja SEO, 145orkiestracje, 155ORM, Object-Relational-Mapper, 43

Ppakiet NuGet, 37pasek postępu, 77pierwszy projekt, 17plik

_CartItemForm.cshtml, 205_Layout.cshtml, 21, 25, 36_List.cshtml, 193About.cshtml, 21App_Start/RouteConfig.cs, 23Basic.cshtml, 37BookInitializer.cs, 51

BookContext.cs, 46bootstrap.css, 33BundleConfig.cs, 167Contact.cshtml, 21Delete.cshtml, 98Details.cshtml, 201EDMX, 44, 50Global.asax.cs, 102, 174HomeController.cs, 19Index.cshtml, 21, 191, 214knockout.custom.js, 186, 206, 217PagingService.js, 108RouteConfig, 102Summary.cshtml, 182WebApiConfig, 102Web.config, 47

podsumowanie koszyka, 187pole wyszukiwania, 28prefiksy trasy, 148procedura obsługi błędów, 129proces CRUD, 58programowanie obiektowe, 40projekt koszyka zakupów, 166projektant aplikacji internetowych, 11przegląd

autoryzacji, 132uwierzytelniania, 131

przekształcanie danych, 154przepływy zadań

Code First, 44, 169Database First, 44, 48Model First, 44

przestrzeń nazw modeli widoku, 94przycisk, 30

wysyłania, 77menu

zwijanego, 26rozwijanego, 31

pusty listing, 90

Rrefaktoryzacja, 154repozytoria, 155REST, 17RESTful, 101routing

adresów URL, 145atrybuty, 145

Poleć książkęKup książkę

Page 19: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Skorowidz 229

ograniczenia, 149prefiksy trasy, 148

rozszerzenieHtmlHelper, 62, 107HtmlHelperExtension, 184subTotal, 186

Sscaffolding, 57sekcja Scripts, 77SEO, Search Engine Optimization, 145separacja zagadnień, 153serwerowe modele widoku, 93, 95silnik Razor, 61sortowanie, 63, 108sprawdzanie

dotyczące autoryzacji, 134poprawności, 74

adresu IP, 141modelu, 119użytkownika, 140

strona główna, 191stronicowanie, 68struktura adresu URL, 23szablon

MVC, 17Web API, 17

szczegóły dotyczące książki, 199

Śśrodowisko

ASP.NET, 131Bootstrap, 25Entity Framework, 43Visual Studio, 101

Ttabela, 89

Author, 49Book, 49

trasa, 146domyślna, 23domyślna kontrolera, 148opcjonalna, 147

tworzeniedanych testowych, 51filtrów globalnych, 117filtru autoryzacji, 140filtru uwierzytelniania, 133filtru wyjątku, 125kontrolera AuthorsController, 58koszyka zakupów, 165listy, 57łańcucha ograniczeń, 149modeli widoku, 40odnośników przycisków, 72pakietów, 166projektu, 17, 19przycisków, 31tabeli, 61właściwości obserwowalnych, 84

Uukład współużytkowany, 179usługa CartItemService, 210usługi, 154, 156usuwanie

autora, 85pozycji koszyka, 213

uwierzytelnianie, 18, 131, 135podstawowe, 137, 139

użycieatrybutów, 145formularzy, 73

VVisual Studio, 101

Wwarstwa

dostępu do danych, 46orkiestracji, 155repozytoriów, 155usług, 154zachowań, 154

Web API, 101obsługa błędów, 125sprawdzanie poprawności, 118

Poleć książkęKup książkę

Page 20: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

230 Skorowidz

wiązaniedanych value, 76danych wysyłania, 76foreach, 215isDirty, 206, 207niestandardowe, 203, 206textInput, 206visible, 206, 207

widok, 17, 40, 79Create, 78Delete, 87Edit, 81Error.cshtml, 128formularza, 81Index, 65, 84, 106usuwania danych, 98

witryna domyślna, 20właściwości

obserwowalne, 84wirtualne, 46

właściwość ViewBag, 20współużytkowanie

logiki biznesowej, 153widoku i modelu widoku, 79

wyodrębnianieadresu IP, 141nazwy, 135

wyświetlanie pustych tabel, 89

wzorzecMVC, 17MVVM, 35, 39REST, 17Unit of Work, 155, 156

Zzachowania, 154, 156zapisywanie pozycji koszyka, 209zmienne

obserwowalne, 75prywatne, 60

znacznikdiv, 89tbody, 62

znak pytajnika, 149

Żżądanie AJAX, 110, 218

Poleć książkęKup książkę

Page 22: Tytuł oryginału: ASP.NET MVC 5 with Bootstrap and …pdf.helion.pl/aspboo/aspboo.pdfAnalizowanie kontrolera HomeController _19 Rysunek 1.1. Tworzenie projektu Rysunek 1.2 prezentuje

Recommended