Podstawy wzorca MVC 2011-10-18 MODEL KON- TROLER WIDOK. Odpowiada za wyświetlenie danych użytkownikowi. Zawiera dane aplikacji oraz jej logikę.



Podobne dokumenty
ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Technologie internetowe ASP.NET Core. Paweł Rajba

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

4 AS SP.NET MVC. Widok. Zaawansowane programowanie internetowe Instrukcja nr 4

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

MVC w praktyce tworzymy system artykułów. cz. 1

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Platforma.NET Wykład 12 Model widok i kontroler Model View Controller

Platforma.NET Wykład 12 Model widok i kontroler Model View Controller. Spis treści. Plan wykładu spotkania tydzień po tygodniu

Walidacja danych w ASP.NET MVC

ASP.NET MVC. Autor wykładu: Marek Wojciechowski

Systemy internetowe ASP.NET mgr inż. Andrzej Sobecki

MVC w praktyce tworzymy system artykułów. cz. 2

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Realizacja Aplikacji Internetowych 2013 laboratorium K. M. Ocetkiewicz

Nowy projekt: - ASP.NET MVC 3 Web Application - [Other Languages] Visual C# Web ASP.NET MVC 3 Web Application - okno dialogowe:

Walidacja po stronie serwera Walidacja po stronie klienta:

Microsoft.NET: ASP.NET MVC + Entity Framework (Model First)

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Wzorce prezentacji internetowych

Modele danych walidacja widoki zorientowane na model

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Realizacja Aplikacji Internetowych 2012 laboratorium K. M. Ocetkiewicz

Programowanie zorientowane obiektowo. Mateusz Kołecki

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie i wykorzystanie usług sieciowych

Laboratorium 7 Blog: dodawanie i edycja wpisów

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Infrastruktura aplikacji WWW

WYKORZYSTANIE WZORCA MVC W ASP.NET

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

JAVA NA SERWERZE SPRING. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

ASP.NET MVC. Uwierzytelnianie i routing. Zaawansowane programowanie internetowe Instrukcja nr 6

5 AS SP.NET MVC. Walidacja danych. Zaawansowane programowanie internetowe Instrukcja nr 5

Programowanie wielowarstwowe i komponentowe

Aplikacje internetowe laboratorium ASP.NET MVC

Programowanie obiektowe

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

3. Silnik MVC Opis rozdziału Organizacja plików. Mini poradnik: Jak stworzyć grę via WWW.

MasterPage w ASP.NET

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Laboratorium 6 Tworzenie bloga w Zend Framework

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Kompozycja Proceduralna

Spring Web MVC, Spring DI

REFERAT O PRACY DYPLOMOWEJ

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

CouchDB. Michał Nowikowski

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

Zaawansowane aplikacje internetowe laboratorium REST

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki


Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Jak widzisz w powyższym przykładzie, mimo że operacja nie powiodła się (otrzymaliśmy status Błąd ), serwer zwrócił nam kod 200 OK.

Platformy Programowania

Zagadnienia Programowania Obiektowego Agata Hejmej

Aplikacje WWW Wprowadzenie

I.Wojnicki, Tech.Inter.

NoSQL Not Only SQL: CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Przetwarzanie dokumentów i widoków.

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Programowanie obiektowe

Specyfikacja implementacyjna aplikacji serwerowej

Wstęp. Ale po co? Implementacja

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wybrane działy Informatyki Stosowanej

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

OPT Open Power Template. System szablonów OPT. Przykładowy skrypt oraz szablon OPT OPT API

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Quiz Aplikacja internetowa

mylittlemvc Framework MVC dla ASP.NET Autor: Michał Skowronek

I.Wojnicki, PHP. Smarty. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie. 28 marca 2014

Bazy danych i strony WWW

media Blitz wydajne sytemy szablonów

Różne podejścia do projektowania aplikacji internetowych

Podstawy programowania III WYKŁAD 6

Rozpoczynając wywód na temat MVVM należy najpierw zadań sobie kilka podstawowych pytań na temat MVVM jako wzorca projektowego :

prepared by: Programowanie WWW Servlety

Transkrypt:

Podstawy wzorca MVC MODEL KON- TROLER WIDOK Zawiera dane aplikacji oraz jej logikę. MODEL WIDOK Odpowiada za wyświetlenie danych użytkownikowi KON- TROLER KON- TROLER MODEL WIDOK Jedyna część aplikacji, która może kontaktować się ze stałymi źródłami danych. Najczęściej występuje pod postacią zestawu klas realizujących mapowanie relacyjno-obiektowe. Odpowiada za warstwę prezentacyjną Najczęściej widok generuje dane w postaci (X)HTML, JSON, Dobrze napisany widok kontaktuje się tylko z modelem, wykorzystuje tylko pętle i instrukcje warunkowe. 1

Stanowi serce każdej aplikacji wykorzystującej wzorzec MVC. KON- TROLER MODEL WIDOK żądanie HTTP Kontroler Model Widok Pobierz dane() Obsługuje żądania HTML Decyduje jakie akcje należy wykonać Łączy się z modelem w celu pobrania lub zmodyfikowania danych Tworzy widok i zwraca go do użytkownika Wczytaj Widok(model) Odpowiedź HTTP Pobierz dane Bootstrapper żądanie HTTP Stworz() Wykonaj() Kontroler frontowy Stworz() Kontroler strony Pobierz dane() Model Wczytaj Widok(model) Pobierz dane Widok //Require Components require_once('../application/models/front.php'); require_once('../application/models/icontroller.php'); require_once('../application/models/view.php'); //Require Controllers require_once('../application/controllers/index.php'); //Initialize the FrontController $front = FrontController::getInstance(); $front->route(); echo $front->getbody(); Odpowiedź Odpowiedź Odpowiedź Odpowiedź Kevin McArthur Pro PHP: Patterns, Frameworks, Testing and More, Apress 2008 2

private function construct() $request = $_SERVER['REQUEST_URI']; $splits = explode('/', trim($request,'/')); $this->_controller =!empty($splits[0])?$splits[0]:'index'; $this->_action =!empty($splits[1])?$splits[1]:'index'; if(!empty($splits[2])) $keys = $values = array(); for($idx=2, $cnt = count($splits); $idx<$cnt; $idx++) if($idx % 2 == 0) //Is even, is key $keys[] = $splits[$idx]; else //Is odd, is value; $values[] = $splits[$idx]; $this->_params = array_combine($keys, $values); Kevin McArthur Pro PHP: Patterns, Frameworks, Testing and More, Apress 2008 public function route() if(class_exists($this->getcontroller())) $rc = new ReflectionClass($this->getController()); if($rc->implementsinterface('icontroller')) if($rc->hasmethod($this->getaction())) $controller = $rc->newinstance(); $method = $rc->getmethod($this->getaction()); $method->invoke($controller); else throw new Exception("Action"); else throw new Exception("Interface"); else throw new Exception("Controller"); Kevin McArthur Pro PHP: Patterns, Frameworks, Testing and More, Apress 2008 Podstawy ASP.NET MVC Jest alternatywną (do web forms) metodą budowania aplikacji www w technologii ASP.NET Jest frameworkiem open source Możliwa jest podmiana dowolnego elementu frameworka Pozwala na korzystanie z kontroli typów 3

Kontroler ASP.NET MVC jest klasą, która: dziedziczy po klasie Controller zawiera metody (akcje) przetwarzające poszczególne żądania metoda akcji powinna być publiczna i najczęściej zwraca obiekt dziedziczący po klasie ActionResult Wymagania względem akcji: metoda musi być publiczna metoda nie może być statyczna metoda nie może być metodą rozszerzającą metoda nie może być kontruktorem, ani metodą typu getter czy setter metoda nie może być szablonowa metoda nie jest metodą z klasy bazowej kontrolera (Controller) metoda nie może zawierać atrybutów typu ref i out. 4

Typy pochodne z ActionResult: Typ ViewResult EmptyResult RedirectResult RedirectToRouteResult JsonResult JavaScriptResult ContentResult FileContentResult FilePathResult FileStreamResult Opis Reprezentuje rezultat w postaci danych XHTML Brak wyniku Reprezentuje przekierowanie do innego adresu URL Reprezentuje przekierowanie do innej trasy Reprezentuje rezultat w postaci JSON Reprezentuje rezultat w postaci skryptu JavaScript Reprezentuje rezultat w postaci tekstowej Reprezentuje rezultat w postaci pliku możliwego do ściągnięcia jak wyżej jak wyżej Metody kontrolera Typ View Redirect RedirectToAction RedirectToRoute Json JavaSriptResult Content File Opis Zwraca obiekt ViewResult Zwraca obiekt RedirectResult Zwraca obiekt RedirectResult Zwraca obiekt RedirectToRouteResult Zwraca obiekt JsonResult Zwraca obiekt JavascriptResult Zwraca obiekt ContentResult Zwraca obiekt FileContentResult, FilePathResult lub FileStreamResult zależnie od podanych parametrów ERROR public ActionResult Create(CategoryModel data) if(modelstate.isvalid) csi.savedata(data); var categories = csi.getcategories(); return View("index", categories); else return View(data); 5

public ActionResult Create(CategoryModel data) if(modelstate.isvalid) csi.savedata(data); return RedirectToAction("index"); else return View(data); Widoki ASPX Razem z ASP.NET MVC 3 Razor Spark NHtml. (może coś własnego) ASPX: <% %> <%= %> <%: %> Razor: @ 6

Standardowo dane do zwykłych widoków możemy przekazywać za pomocą jednej dwóch metod: słownik ViewData obiekt dynamiczny ViewBag W przypadku obu metod łatwo o pomyłkę podczas tworzenia widoków! public ActionResult Index() Model m = WczytajModel(); ViewData["Imie"] = m.imie; ViewData["Nazwisko"] = m.nazwisko; ViewData["Wiek"] = m.wiek; return View(); <asp:content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2> <%= ViewData["Imie"] %> <%: ViewData["Nazwisko"] %> </h2> <p> <%= ViewData["Nazwisko"] %> </p> </asp:content> 7

public ActionResult Index() Model m = WczytajModel(); ViewBag.Imie = m.imie; ViewBag.Nazwisko = m.nazwisko; ViewBag.Wiek = m.wiek; return View(); <h2>@viewbag.imię @ViewBag.Nazwisko</h2> <p> Wiek: @ViewBag.Wiek </p> Domain model Data Set LinqTo SQL Entity Framework View model Proste klasy Opisują te dane, które mają się wyświetlać na stronie 8

public class CategoryBrowseModel public string Name set; get; public int ID set; get; public int PlantsCount set; get; Dane do widoku przekazywane są jako obiekt konkretnej klasy, a nie jako kolekcja, czy obiekt dynamiczny. Dostęp do danych w widoku możliwy jest za pomocą zmiennej Model. ASPX: <h2 style="color: <% if(viewbag.wiek <= 30)%> orange <% else%>red<% %>"> <%: ViewBag.Imie %> <%: ViewBag.Nazwisko %></h2> Razor: <h2 style="color: @if(viewbag.wiek <= 30) <text>orange</text> else<text>red</text>"> @ViewBag.Imie @ViewBag.Nazwisko</h2> 9

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage< System.Collections.Generic.List<MvcApplication1.Models.OsobaViewModel>>" %> <asp:content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <ul> <% foreach(var osoba in Model) %> <li><%: osoba.imie %> <%: osoba.nazwisko %></li> <%%> </ul> </asp:content> @model System.Collections.Generic.List<MVC3_test.Models.OsobaViewModel> <ul> @foreach(var osoba in Model) <li>@osoba.imie @osoba.nazwisko</li> </ul> ActionLink BeginForm DisplayFor DisplayTextFor EditorFor CheckBoxFor DropDownListFor HiddenFor LabelFor ListBoxFor PasswordFor RadioButtonFor TextAreaFor TextBoxFor ValidateFor ValidationMessageFor ValidationSummary 10

<area>/views/<controllername>/editortemplates/<templatename>.ascx <area>/views/shared/editortemplates/<templatename>.ascx Views/<ControllerName>/EditorTemplates/<TemplateName>.ascx Views/Shared/EditorTemplates/<TemplateName>.ascx 11