ASP.NET MVC 3
(obejmuje aktualizację narzędzi z kwietnia 2011 r.)
ASP.NET MVC 3 to platforma do tworzenia skalowalnych, opartych na standardach aplikacji internetowych przy użyciu dobrze ustalonych wzorców projektowych oraz możliwości ASP.NET i .NET Framework.
Instaluje go równolegle z ASP.NET MVC 2, więc zacznij korzystać z niego dzisiaj!
Pobierz instalatora tutaj
- Zintegrowany system szkieletu rozszerzalny za pośrednictwem narzędzia NuGet
- Szablony projektów z obsługą języka HTML 5
- Widoki ekspresyjne, w tym nowy aparat widoków Razor
- Zaawansowane zaczepienia za pomocą wstrzykiwania zależności i globalnych filtrów akcji
- Obsługa zaawansowanego języka JavaScript przy użyciu nieuprawialnych powiązań JavaScript, jQuery Validation i JSON
- Przeczytaj pełną listę funkcji poniżej
Co nowego w programie ASP.NET MVC 3
- Phil Haack: wydany ASP.NET MVC 3
- Scott Hanselman: ASP.NET MVC3, WebMatrix, NuGet, IIS Express i Orchard wydany — styczniowa wersja internetowa firmy Microsoft w kontekście
- Scott Guthrie: Ogłoszenie wydania ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Sad, WebMatrix
- Informacje o wersji ASP.NET MVC 3
Instalacja i pomoc
- Instalowanie ASP.NET MVC 3 przy użyciu Instalatora platformy internetowej (zalecane)
- Instalowanie ASP.NET MVC 3 przy użyciu pliku wykonywalnego instalatora
- Instalowanie ASP.NET MVC 3 dla programu Visual Studio 11 Developer Preview
- Przeczytaj samouczek Wprowadzenie do ASP.NET MVC 3
- Uzyskaj pomoc i omówić ASP.NET MVC 3 na forach
ASP.NET MVC 3 opiera się na ASP.NET MVC 1 i 2, dodając doskonałe funkcje, które upraszczają kod i umożliwiają dokładniejsze rozszerzanie. Ten temat zawiera omówienie wielu nowych funkcji, które zostały uwzględnione w tej wersji, zorganizowane w następujących sekcjach:
- Rozszerzalne tworzenie szkieletów za pomocą integracji z aplikacją MvcScaffold
- Szablony projektów z obsługą języka HTML 5
- Aparat widoku Razor
- Obsługa wielu aparatów widoków
- Ulepszenia kontrolera
- JavaScript i Ajax
- Ulepszenia walidacji modelu
- Ulepszenia wstrzykiwania zależności
- Inne nowe funkcje
Nowy system tworzenia szkieletów ułatwia pobieranie i rozpoczynanie pracy, jeśli dopiero zaczynasz korzystać z platformy, oraz automatyzujesz typowe zadania programistyczne, jeśli masz doświadczenie i wiesz już, co robisz.
Jest to obsługiwane przez nowy pakiet szkieletowy NuGet o nazwie MvcScaffolding. Termin "Tworzenie szkieletów" jest używany przez wiele technologii oprogramowania, co oznacza "szybkie generowanie podstawowego konspektu oprogramowania, które można następnie edytować i dostosowywać". Pakiet szkieletowy tworzony dla ASP.NET MVC jest bardzo korzystny w kilku scenariuszach:
- Jeśli uczysz się ASP.NET MVC po raz pierwszy, ponieważ zapewnia szybki sposób na uzyskanie przydatnego, działającego kodu, który można następnie edytować i dostosować zgodnie z potrzebami. To ratuje cię od traumy patrząc na pustą stronę i nie mając pojęcia, gdzie zacząć!
- Jeśli wiesz, ASP.NET MVC dobrze i teraz badasz nową technologię dodatku , taką jak maper relacyjny obiektów, aparat widoku, biblioteka testowa itp., ponieważ twórca tej technologii mógł również utworzyć pakiet szkieletowy.
- Jeśli praca polega na wielokrotnym tworzeniu podobnych klas lub plików pewnego rodzaju, ponieważ można utworzyć niestandardowe szkielety, które wyjściowe urządzenia testowe, skrypty wdrażania lub cokolwiek innego, czego potrzebujesz. Wszyscy członkowie zespołu mogą też korzystać z niestandardowych szkieletów.
Inne funkcje w folderze MvcScaffolding obejmują:
- Obsługa projektów C# i VB
- Obsługa aparatów widoków Razor i ASPX
- Obsługuje tworzenie szkieletów w obszarach ASP.NET MVC i używanie niestandardowych układów/wzorców widoku
- Dane wyjściowe można łatwo dostosować, edytując szablony T4
- Można dodawać całkowicie nowe szkielety przy użyciu niestandardowej logiki programu PowerShell i niestandardowych szablonów T4. Te (i wszystkie podane parametry niestandardowe) są automatycznie wyświetlane na liście uzupełniania kart konsoli.
- Możesz pobrać pakiety NuGet zawierające dodatkowe szkielety dla różnych technologii (np. istnieje jeden dowód koncepcji dla LINQ to SQL) i połączyć je i dopasować je razem
Aktualizacja ASP.NET NARZĘDZI MVC 3 zawiera doskonałą obsługę programu Visual Studio dla tego systemu tworzenia szkieletów, takich jak:
- Okno dialogowe Dodawania kontrolera obsługuje teraz pełne automatyczne tworzenie, odczytywanie, aktualizowanie i usuwanie akcji kontrolera oraz odpowiednie widoki. Domyślnie ten szkielet służy do uzyskiwania dostępu do kodu danych przy użyciu programu EF Code First.
- Okno dialogowe Dodawanie kontrolera obsługuje rozszerzalne szkielety za pośrednictwem pakietów NuGet, takich jak MvcScaffolding. Umożliwia to podłączanie niestandardowych szkieletów do okna dialogowego, które umożliwiłoby tworzenie szkieletów dla innych technologii dostępu do danych, takich jak NHibernate, a nawet JET z odBCDirect, jeśli jesteś tak skłonny!
Aby uzyskać więcej informacji na temat tworzenia szkieletów w programie ASP.NET MVC 3, zobacz następujące zasoby:
Steve Sanderson post serii, w tym:
Wpis Scotta Hanselmana z sesji PDC 2010 Building a Blog with Microsoft "Unnamed Package of Web Love"
Okno dialogowe Nowy projekt zawiera pole wyboru umożliwiające włączenie wersji HTML 5 szablonów projektów. Te szablony korzystają z modernizatora 1.7, aby zapewnić obsługę zgodności dla języków HTML 5 i CSS 3 w przeglądarkach na poziomie dół.
ASP.NET MVC 3 jest wyposażony w nowy aparat widoku o nazwie Razor, który oferuje następujące korzyści:
- Składnia Razor jest czysta i zwięzła, co wymaga minimalnej liczby naciśnięć klawiszy.
- Platforma Razor jest łatwa do nauki, częściowo dlatego, że jest oparta na istniejących językach, takich jak C# i Visual Basic.
- Program Visual Studio zawiera funkcję IntelliSense i kolorowanie kodu dla składni Razor.
- Widoki Razor można przetestować jednostki bez konieczności uruchamiania aplikacji lub uruchamiania serwera internetowego.
Niektóre nowe funkcje Razor obejmują następujące elementy:
@model
składnia określająca typ przekazywany do widoku.@* *@
składnia komentarza.- Możliwość określenia wartości domyślnych (takich jak
layoutpage
) raz dla całej witryny. - Metoda wyświetlania
Html.Raw
tekstu bez kodowania HTML. - Obsługa udostępniania kodu między wieloma widokami (pliki _viewstart.cshtml lub _viewstart.vbhtml ).
Platforma Razor zawiera również nowe pomocniki HTML, takie jak:
Chart
. Renderuje wykres, oferując te same funkcje co kontrolka wykresu w ASP.NET 4.WebGrid
. Renderuje siatkę danych wraz z funkcjami stronicowania i sortowania.Crypto
. Używa algorytmów tworzenia skrótów w celu utworzenia poprawnie ssolonych i skrótów haseł.WebImage
. Renderuje obraz.WebMail
. Wysyła wiadomość e-mail.
Aby uzyskać więcej informacji na temat platformy Razor, zobacz następujące zasoby:
- Wpis na blogu Scotta Guthrie'a wprowadzający Razor
- Scott Guthrie's blog post introducing the @model keyword
- Wpis w blogu Scotta Guthrie'a wprowadzający układy Razor
- Szybki opis interfejsu API Razor
- Informacje o wersji MVC 3
Okno dialogowe Dodawanie widoku w programie ASP.NET MVC 3 umożliwia wybranie aparatu wyświetlania, z którym chcesz pracować, a okno dialogowe Nowy projekt umożliwia określenie domyślnego aparatu wyświetlania projektu. Możesz wybrać aparat widoku Web Forms (ASPX), Razor lub aparat widoku typu open source, taki jak Spark, NHaml lub NDjango.
Czasami chcesz wykonać logikę przed uruchomieniem metody akcji lub po uruchomieniu metody akcji. Aby to obsługiwać, ASP.NET MVC 2 dostarczył filtry akcji. Filtry akcji to atrybuty niestandardowe, które zapewniają deklaratywną metodę dodawania zachowania przed akcją i po akcji do określonych metod akcji kontrolera. Jednak w niektórych przypadkach można określić zachowanie przed akcją lub po akcji, które ma zastosowanie do wszystkich metod akcji. MvC 3 umożliwia określenie filtrów globalnych przez dodanie ich do GlobalFilters
kolekcji. Aby uzyskać więcej informacji na temat filtrów akcji globalnych, zobacz następujące zasoby:
Kontrolery MVC 2 obsługują ViewData
właściwość, która umożliwia przekazywanie danych do szablonu widoku przy użyciu interfejsu API słownika powiązanego z opóźnieniem. W programie MVC 3 można również użyć nieco prostszej ViewBag
składni z właściwością, aby osiągnąć ten sam cel. Na przykład zamiast pisać ViewData["Message"]="text"
, możesz napisać ViewBag.Message="text"
. Nie trzeba definiować żadnych silnie typiowanych klas do używania ViewBag
właściwości. Ponieważ jest to właściwość dynamiczna, można zamiast tego po prostu pobrać lub ustawić właściwości i będzie rozpoznawać je dynamicznie w czasie wykonywania. ViewBag
Wewnętrznie właściwości są przechowywane jako pary nazw/wartości w słownikuViewData
. (Uwaga: w większości wersji wstępnej MVC 3 ViewBag
właściwość została nazwana właściwością ViewModel
).
Następujące ActionResult
typy i odpowiadające im metody pomocnicze są nowe lub ulepszone w programie MVC 3:
- HttpNotFoundResult. Zwraca kod stanu HTTP 404 do klienta.
- RedirectResult. Zwraca tymczasowe przekierowanie (kod stanu HTTP 302) lub trwałe przekierowanie (kod stanu HTTP 301), w zależności od parametru logicznego. W połączeniu z tą zmianą klasa Controller ma teraz trzy metody wykonywania stałych przekierowań:
RedirectPermanent
,RedirectToRoutePermanent
iRedirectToActionPermanent
. Te metody zwracają wystąpienie obiektuRedirectResult
z właściwością ustawionąPermanent
natrue
. - HttpStatusCodeResult. Zwraca kod stanu HTTP określony przez użytkownika.
Domyślnie pomocnicy Ajax i walidacji w mvC 3 używają niestruwnego podejścia JavaScript. Unobtrusive JavaScript unika wstrzykiwania wbudowanego kodu JavaScript do kodu HTML. Dzięki temu kod HTML jest mniejszy i mniej zaśmiecony i ułatwia zamianę lub dostosowywanie bibliotek języka JavaScript. Pomocnicy weryfikacji w programie MVC 3 również domyślnie używają jQueryValidate
wtyczki. Jeśli chcesz, aby zachowanie MVC 2 było możliwe, możesz wyłączyć nieuprawialny język JavaScript przy użyciu ustawienia plikuweb.config . Aby uzyskać więcej informacji na temat ulepszeń języka JavaScript i Ajax, zobacz następujące zasoby:
- Podstawowe wprowadzenie do nietrudnego języka JavaScript na stronie Wikipedii
- Brad Wilson's Unobtrusive JavaScript Post
- Brad Wilson's Unobtrusive JavaScript Validation Post
- Tworzenie aplikacji MVC 3 za pomocą języka Razor i unobtrusive JavaScript (samouczek w witrynie ASP.NET)
- Informacje o wersji MVC 3
We wcześniejszych wersjach mvC należy jawnie wywołać metodę Html.EnableClientValidation
z widoku, aby umożliwić walidację po stronie klienta. W programie MVC 3 nie jest to już wymagane, ponieważ walidacja po stronie klienta jest domyślnie włączona. (Można to wyłączyć przy użyciu ustawienia w pliku web.config ).
Aby walidacja po stronie klienta działała, nadal musisz odwołać się do odpowiednich bibliotek weryfikacji jQuery i jQuery w witrynie. Te biblioteki można hostować na własnym serwerze lub odwoływać się do nich z sieci dostarczania zawartości (CDN), takiej jak sieci CDN firmy Microsoft lub Google.
ASP.NET MVC 3 obsługuje nową klasę RemoteAttribute , która umożliwia korzystanie z obsługi zdalnego modułu sprawdzania poprawności wtyczki jQuery. Dzięki temu biblioteka weryfikacji po stronie klienta automatycznie wywołuje metodę niestandardową zdefiniowaną na serwerze w celu wykonania logiki weryfikacji, która może być wykonywana tylko po stronie serwera.
W poniższym przykładzie atrybut określa, Remote
że walidacja klienta wywoła akcję o nazwie UserNameAvailable
w UsersController
klasie, aby zweryfikować UserName
pole.
public class User
{
[Remote("UserNameAvailable", "Users")]
public string UserName { get; set; }
}
Poniższy przykład przedstawia odpowiedni kontroler.
public class UsersController
{
public bool UserNameAvailable(string username)
{
if(MyRepository.UserNameExists(username))
{
return "false";
}
return "true";
}
}
Aby uzyskać więcej informacji na temat używania atrybutu Remote
, zobacz How to: Implement Remote Validation in ASP.NET MVC in the MSDN library (Instrukcje: implementowanie weryfikacji zdalnej w ASP.NET MVC w bibliotece MSDN).
ASP.NET MVC 3 obejmuje wbudowaną obsługę powiązań JSON, która umożliwia metodom akcji odbieranie danych zakodowanych w formacie JSON i powiązanie modelu z parametrami metody akcji. Ta funkcja jest przydatna w scenariuszach obejmujących szablony klienta i powiązanie danych. (Szablony klienta umożliwiają formatowanie i wyświetlanie pojedynczego elementu danych lub zestawu elementów danych przy użyciu szablonów wykonywanych na kliencie). MvC 3 umożliwia łatwe łączenie szablonów klienta z metodami akcji na serwerze, który wysyła i odbiera dane JSON. Aby uzyskać więcej informacji na temat obsługi powiązań JSON, zobacz sekcję Ulepszenia języka JavaScript i AJAXw blogu Scott Guthrie w wersji zapoznawczej MVC 3.
ASP.NET MVC 3 obsługuje DataAnnotations
atrybuty metadanych, takie jak DisplayAttribute
.
Klasa ValidationAttribute
została ulepszona w .NET Framework 4, aby obsługiwać nowe IsValid
przeciążenie, które zawiera więcej informacji na temat bieżącego kontekstu weryfikacji, na przykład tego, który obiekt jest weryfikowany. Umożliwia to bogatsze scenariusze, w których można zweryfikować bieżącą wartość na podstawie innej właściwości modelu. Na przykład nowy CompareAttribute
atrybut umożliwia porównanie wartości dwóch właściwości modelu. W poniższym przykładzie właściwość musi być zgodna ComparePassword
z polem Password
, aby było prawidłowe.
public class User
{
[Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string ComparePassword { get; set; }
}
Interfejs IValidatableObject umożliwia przeprowadzanie weryfikacji na poziomie modelu i umożliwia dostarczanie komunikatów o błędach weryfikacji specyficznych dla stanu ogólnego modelu lub między dwiema właściwościami w modelu. MvC 3 pobiera teraz błędy z interfejsu IValidatableObject
podczas powiązania modelu i automatycznie flaguje lub wyróżnia pola, których dotyczy problem, przy użyciu wbudowanych pomocników formularzy HTML.
Interfejs IClientValidatable umożliwia ASP.NET MVC odnajdywanie w czasie wykonywania, czy moduł sprawdzania poprawności ma obsługę weryfikacji klienta. Ten interfejs został zaprojektowany tak, aby można go było zintegrować z różnymi strukturami weryfikacji.
Aby uzyskać więcej informacji na temat interfejsów weryfikacji, zobacz sekcję Ulepszenia walidacji modeluw wpisie w blogu MVC 3 firmy Scott Guthrie w wersji zapoznawczej. (Należy jednak pamiętać, że odwołanie do obiektu "IValidateObject" w blogu powinno mieć wartość "IValidatableObject".
ASP.NET MVC 3 zapewnia lepszą obsługę stosowania wstrzykiwania zależności (DI) i integracji z kontenerami iniekcji zależności lub inwersji kontroli (IOC). Obsługa di została dodana w następujących obszarach:
- Kontrolery (rejestrowanie i wstrzykiwanie fabryk kontrolerów, wstrzykiwanie kontrolerów).
- Widoki (rejestrowanie i wstrzykiwanie aparatów widoków, wstrzykiwanie zależności do stron widoku).
- Filtry akcji (lokalizowanie i wstrzykiwanie filtrów).
- Powiązania modelu (rejestrowanie i wstrzykiwanie).
- Dostawcy weryfikacji modelu (rejestrowanie i wstrzykiwanie).
- Dostawcy metadanych modelu (rejestrowanie i wstrzykiwanie).
- Dostawcy wartości (rejestrowanie i wstrzykiwanie).
MvC 3 obsługuje bibliotekę lokalizatora usługi Common Service i dowolny kontener DI, który obsługuje interfejs tej biblioteki IServiceLocator
. Obsługuje również nowy IDependencyResolver
interfejs, który ułatwia integrowanie struktur DI.
Aby uzyskać więcej informacji na temat di w usłudze MVC 3, zobacz następujące zasoby:
ASP.NET MVC 3 automatycznie instaluje i włącza narzędzie NuGet w ramach konfiguracji. NuGet to bezpłatny menedżer pakietów open source, który ułatwia znajdowanie, instalowanie i używanie bibliotek i narzędzi platformy .NET w projektach. Współdziała ona ze wszystkimi typami projektów programu Visual Studio (w tym ASP.NET Web Forms i ASP.NET MVC).
NuGet umożliwia deweloperom, którzy utrzymują projekty open source (na przykład projekty takie jak Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks i Elmah) w celu spakowania bibliotek i zarejestrowania ich w galerii online. Jest to łatwe dla deweloperów platformy .NET, którzy chcą użyć jednej z tych bibliotek, aby znaleźć pakiet i zainstalować go w projektach, nad którymi pracują.
Dzięki aktualizacji narzędzi ASP.NET 3 szablony projektów zawierają wstępnie zainstalowane pakiety NuGet biblioteki JavaScript, dzięki czemu można je aktualizować za pośrednictwem narzędzia NuGet. Program Entity Framework Code First jest również wstępnie instalowany jako pakiet NuGet.
Aby uzyskać więcej informacji na temat narzędzia NuGet, zobacz dokumentację narzędzia NuGet.
ASP.NET MVC obsługuje buforowanie danych wyjściowych odpowiedzi na pełną stronę od wersji 1. MvC 3 obsługuje również buforowanie danych wyjściowych częściowych stron, co umożliwia łatwe buforowanie regionów lub fragmentów odpowiedzi. Aby uzyskać więcej informacji na temat buforowania, zobacz sekcję Buforowanie częściowej strony wblogu Scott Guthrie w temacie MVC 3 release candidate and the Child Action Output Caching section of the MVC 3 Release Notes (Informacje o wersji MVC 3).
ASP.NET MVC ma wbudowaną walidację żądań, która automatycznie pomaga chronić przed atakami polegającymi na wstrzyknięciu kodu XSS i HTML. Czasami jednak chcesz jawnie wyłączyć walidację żądania, na przykład jeśli chcesz zezwolić użytkownikom na publikowanie zawartości HTML (na przykład w wpisach w blogu lub zawartości CMS). Teraz można dodać atrybut AllowHtml do modeli lub wyświetlić modele, aby wyłączyć walidację żądań na podstawie właściwości podczas powiązania modelu. Aby uzyskać więcej informacji na temat weryfikacji żądań, zobacz następujące zasoby:
- Sekcja Unobtrusive JavaScript i Validation w wpisie na blogu Scotta Guthrie'a na kandydata do wydania MVC 3.
- Informacje o wersji MVC 3
W programie ASP.NET MVC 3 można dodawać szablony projektów, aparaty wyświetlania i struktury projektów testów jednostkowych do okna dialogowego Nowy projekt .
ASP.NET szablony szkieletów MVC 3 lepiej identyfikują właściwości klucza podstawowego w modelach i obsługują je odpowiednio niż we wcześniejszych wersjach MVC. (Na przykład szablony tworzenia szkieletów zapewniają teraz, że klucz podstawowy nie jest szkieletem jako edytowalne pole formularza).
Domyślnie szkielety Utwórz i Edytuj używają Html.EditorFor
teraz pomocnika zamiast Html.TextBoxFor
pomocnika. Poprawia to obsługę metadanych w modelu w postaci atrybutów adnotacji danych, gdy w oknie dialogowym Dodawanie widoku jest generowany widok.
Dodano nowe przeciążenia LabelFor
metody i dla metod pomocników i LabelForModel
. Nowe przeciążenia umożliwiają określenie lub zastąpienie tekstu etykiety.
W ASP.NET MVC 3 możesz wskazać, czy klasa kontrolera ma używać stanu sesji, a jeśli tak, czy stan sesji powinien być odczyt/zapis lub tylko do odczytu. Aby uzyskać więcej informacji na temat obsługi kontrolera bez sesji, zobacz Informacje o wersji MVC 3.
Możesz użyć atrybutu AdditionalMetadata , aby wypełnić ModelMetadata.AdditionalValues
słownik dla właściwości modelu. Jeśli na przykład model widoku ma właściwość, która powinna być wyświetlana tylko administratorowi, możesz dodać adnotację do tej właściwości, jak pokazano w poniższym przykładzie:
public class ProductViewModel
{
[AdditionalMetadata("AdminOnly", true)]
public string RefundCode {get; set;}
}
Te metadane są dostępne dla dowolnego szablonu wyświetlania lub edytora po renderowaniu modelu widoku produktu. Do ciebie należy interpretować informacje o metadanych.
Funkcja AccountController w szablonie projektu internetowego została znacznie ulepszona.
Dołączono nowy szablon projektu intranetowego, który umożliwia uwierzytelnianie systemu Windows i usuwa element AccountController.