Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


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

Najważniejsze funkcje

  • 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

Instalacja i pomoc

ASP.NET MVC 3 — omówienie

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

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:

Szablony projektów HTML 5

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ół.

Aparat widoku Razor

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:

Obsługa wielu aparatów widoków

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.

Ulepszenia kontrolera

Filtry akcji globalnych

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:

Nowa właściwość "ViewBag"

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 ).

Nowe typy "ActionResult"

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, RedirectToRoutePermanenti RedirectToActionPermanent. Te metody zwracają wystąpienie obiektu RedirectResult z właściwością ustawioną Permanent na true.
  • HttpStatusCodeResult. Zwraca kod stanu HTTP określony przez użytkownika.

Ulepszenia języka JavaScript i Ajax

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:

Client-Side walidacja włączona domyślnie

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.

Zdalny moduł sprawdzania poprawności

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).

Obsługa powiązań JSON

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.

Ulepszenia walidacji modelu

Atrybuty metadanych "DataAnnotations"

ASP.NET MVC 3 obsługuje DataAnnotations atrybuty metadanych, takie jak DisplayAttribute.

Klasa "ValidationAttribute"

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; } 
}

Interfejsy weryfikacji

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".

Ulepszenia wstrzykiwania zależności

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:

Inne nowe funkcje

Integracja narzędzia NuGet

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.

buforowanie danych wyjściowych Partial-Page

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).

Szczegółowa kontrola nad weryfikacją żądań

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:

Rozszerzalne okno dialogowe "Nowy projekt"

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 .

Ulepszenia tworzenia szkieletów szablonów

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.

Nowe przeciążenia dla "Html.LabelFor" i "Html.LabelForModel"

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.

Obsługa kontrolera bez sesji

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.

Nowa klasa "AdditionalMetadataAttribute"

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.

Ulepszenia funkcji AccountController

Funkcja AccountController w szablonie projektu internetowego została znacznie ulepszona.

Nowy szablon projektu intranetowego

Dołączono nowy szablon projektu intranetowego, który umożliwia uwierzytelnianie systemu Windows i usuwa element AccountController.