Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
(včetně aktualizace nástrojů z dubna 2011)
ASP.NET MVC 3 je architektura pro vytváření škálovatelných webových aplikací založených na standardech s využitím dobře zavedených vzorů návrhu a výkonu ASP.NET a rozhraní .NET Framework.
Instaluje se souběžně s ASP.NET MVC 2, takže ho začněte používat ještě dnes!
Stáhněte si instalační program sem.
Hlavní funkce
- Integrovaný systém Scaffolding, rozšiřitelný pomocí NuGetu
- Šablony projektů s podporou HTML 5
- Expresivní pohledy včetně nového Razor View Engine
- Výkonné háky s injektáží závislostí a globálními filtry akcí
- Bohatá podpora JavaScriptu s nevtíravým JavaScriptem, ověřováním jQuery a vazbou JSON
- Přečtěte si úplný seznam funkcí níže.
Hlavní odkazy
Novinky v ASP.NET MVC 3
- Phil Haack: ASP.NET MVC 3 vydáno
- Scott Hanselman: ASP.NET MVC3, WebMatrix, NuGet, IIS Express a Orchard vydány – Lednová webová verze Microsoftu v kontextu
- Scott Guthrie: Oznámení vydání ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix
- Poznámky k verzi pro ASP.NET MVC 3
Instalace a nápověda
- Instalace ASP.NET MVC 3 pomocí instalačního programu webové platformy (doporučeno)
- Instalace ASP.NET MVC 3 pomocí spustitelného souboru instalačního programu
- Instalace ASP.NET MVC 3 pro Visual Studio 11 Developer Preview
- Přečtěte si úvodní kurz k ASP.NET MVC 3.
- Získejte nápovědu a prodiskutujte ASP.NET MVC 3 ve fórech
přehled ASP.NET MVC 3
ASP.NET MVC 3 staví na ASP.NET MVC 1 a 2 a přidává skvělé funkce, které zjednodušují kód a umožňují hlubší rozšiřitelnost. Toto téma obsahuje přehled mnoha nových funkcí, které jsou součástí této verze, uspořádané do následujících částí:
- Rozšiřitelné scaffoldování s integrací MvcScaffold
- Šablony projektů s podporou HTML 5
- Razor View Engine
- Podpora více modulů zobrazení
- Vylepšení kontroleru
- JavaScript a Ajax
- Vylepšení ověření modelu
- Vylepšení injekce závislostí
- Další nové funkce
Rozšiřitelné generování uživatelského rozhraní s využitím integrace MvcScaffold
Nový Scaffolding systém usnadňuje začátky a produktivní používání, pokud s frameworkem zcela začínáte, a umožňuje automatizaci běžných úkolů vývoje, pokud máte zkušenosti a již víte, co děláte.
To podporuje nový NuGet balíček scaffolding s názvem MvcScaffolding. Pojem "Scaffolding" je používán mnoha softwarovými technologiemi pro "rychlé generování základní kostry softwaru, kterou pak můžete upravit a přizpůsobit". Balíček pro generování uživatelského rozhraní, který vytváříme pro ASP.NET MVC, je velmi přínosný v několika scénářích:
- Pokud se učíte ASP.NET MVC poprvé, protože vám poskytne rychlý způsob, jak získat nějaký užitečný a funkční kód, který pak můžete upravit a přizpůsobit podle svých potřeb. To vám ušetří z traumatu pohled na prázdnou stránku a nemáte představu, kde začít!
- Pokud dobře znáte ASP.NET MVC a nyní zkoumáte nové doplňkové technologie, jako je například objektově-relační mapovač, modul zobrazení, testovací knihovnu atd., protože tvůrce této technologie pro ni mohl také vytvořit scaffolding balíček.
- Pokud vaše práce zahrnuje opakované vytváření podobných tříd nebo souborů určitého druhu, můžete vytvořit vlastní scaffoldery, které generují výstupy testovacích přípravků, skripty nasazení nebo cokoliv jiného, co potřebujete. Všichni členové vašeho týmu mohou používat i vaše vlastní scaffoldy.
Mezi další funkce v MvcScaffolding patří:
- Podpora projektů C# a VB
- Podpora pro moduly zobrazení Razor a ASPX
- Podporuje skafoldování do oblastí ASP.NET MVC a použití vlastních rozložení nebo předloh zobrazení.
- Výstup můžete snadno přizpůsobit úpravou šablon T4.
- Do aplikace můžete přidat zcela nové scaffoldery pomocí vlastní logiky PowerShellu a vlastních šablon T4. Tyto (a všechny vlastní parametry, které jste jim dali) se automaticky zobrazí v seznamu doplňování příkazů konzole.
- Můžete získat balíčky NuGet obsahující další scaffoldery pro různé technologie (např. existuje prototyp pro LINQ to SQL) a kombinovat je dohromady.
Aktualizace nástrojů ASP.NET MVC 3 zahrnuje skvělou podporu sady Visual Studio pro tento systém generování základní struktury aplikace, například:
- Dialogové okno Přidat kontroler nyní podporuje úplné automatické generování akcí kontroleru pro vytvoření, čtení, aktualizaci a odstranění a odpovídající zobrazení. Ve výchozím nastavení vytvoří strukturu přístupu k datům pomocí EF Code First.
- Dialogové okno Přidat kontroler podporuje rozšiřitelná lešení prostřednictvím balíčků NuGet, jako je MvcScaffolding. To umožňuje vkládání vlastních šablon do dialogového okna, což vám umožní vytvářet šablony pro jiné technologie přístupu k datům, jako je NHibernate nebo dokonce JET s ODBCDirect, pokud o to máte zájem!
Další informace o generování kostry v ASP.NET MVC 3 můžete nalézt v následujících zdrojích:
Steve Sandersonova série příspěvků, včetně:
Scott Hanselman příspěvek z jeho PDC 2010 sezení Building a Blog with Microsoft "Unnamed Package of Web Love"
Šablony projektů HTML 5
Dialogové okno Nový projekt obsahuje zaškrtávací políčko umožňující povolení verze HTML 5 šablon projektů. Tyto šablony využívají Modernr 1.7 k zajištění podpory kompatibility pro HTML 5 a CSS 3 v prohlížečích nižší úrovně.
Modul Razor View
ASP.NET MVC 3 obsahuje nový modul zobrazení s názvem Razor, který nabízí následující výhody:
- Syntaxe Razor je čistá a stručná a vyžaduje minimální počet klávesových úhozů.
- Razor se částečně snadno učí, protože je založený na existujících jazycích, jako je C# a Visual Basic.
- Visual Studio obsahuje IntelliSense a zabarvení kódu pro syntaxi Razor.
- Zobrazení Razor lze testovat bez nutnosti spuštění aplikace nebo spuštění webového serveru.
Mezi nové funkce Razor patří:
-
@modelsyntaxe pro určení typu, který se předává do zobrazení. -
@* *@syntaxe komentáře. - Možnost zadat výchozí hodnoty (například
layoutpage) jednou pro celý web. - Metoda
Html.Rawzobrazení textu bez kódování HTML. - Podpora sdílení kódu mezi více zobrazeními (soubory _viewstart.cshtml nebo _viewstart.vbhtml ).
Razor také obsahuje nové pomocníky HTML, například následující:
-
Chart. Vykreslí graf, který nabízí stejné funkce jako ovládací prvek grafu v ASP.NET 4. -
WebGrid. Vykreslí datovou mřížku s funkcí stránkování a řazení. -
Crypto. Používá algoritmy hash k vytvoření správně slaných a hashovaných hesel. -
WebImage. Vykreslí obrázek. -
WebMail. Odešle e-mailovou zprávu.
Další informace o Razoru najdete v následujících zdrojích informací:
- Blogový příspěvek Scotta Guthrieho představuje Razor
- Scott Guthrie's blog post introducing the @model keyword
- Blogový příspěvek Scotta Guthrieho, který představuje rozložení Razor
- Stručná referenční dokumentace k rozhraní API Razor
- Poznámky k verzi MVC 3
Podpora více modulů zobrazení
Dialogové okno Přidat zobrazení v ASP.NET MVC 3 umožňuje zvolit modul zobrazení, se kterým chcete pracovat, a dialogové okno Nový projekt umožňuje určit výchozí modul zobrazení projektu. Můžete zvolit modul pro zobrazení webových formulářů (ASPX), Razor nebo opensourcový modul zobrazení, jako je Spark, NHaml nebo NDjango.
Vylepšení kontroleru
Globální filtry akcí
Někdy chcete provést logiku před spuštěním metody akce nebo po spuštění metody akce. K tomu ASP.NET MVC 2 poskytuje filtry akcí. Filtry akcí jsou vlastní atributy, které poskytují deklarativní prostředky pro přidání chování před akcí a po akci do konkrétních metod akce kontroleru. V některých případech však můžete chtít určit chování před akcí nebo po akci, které platí pro všechny metody akce. MVC 3 umožňuje zadat globální filtry jejich přidáním do GlobalFilters kolekce. Další informace o globálních filtrech naleznete v následujících zdrojích:
Nová vlastnost ViewBag
Kontrolery MVC 2 podporují ViewData vlastnost, která umožňuje předávat data do šablony zobrazení pomocí rozhraní API slovníku s pozdní vazbou. V MVC 3 můžete také použít poněkud jednodušší syntaxi s ViewBag vlastností k dosažení stejného účelu. Například místo psaní ViewData["Message"]="text"můžete psát ViewBag.Message="text". Pro použití vlastnosti nemusíte definovat žádné silně typované třídy ViewBag. Vzhledem k tomu, že se jedná o dynamickou vlastnost, můžete místo toho jednoduše získat nebo nastavit vlastnosti a bude je dynamicky řešit za běhu. Interně jsou ViewBag vlastnosti ukládány jako páry název/hodnota v ViewData slovníku. (Poznámka: Ve většině předběžných verzí MVC 3 byla vlastnost ViewBag pojmenována jako vlastnost ViewModel.)
Nové typy ActionResult
ActionResult Následující typy a odpovídající pomocné metody jsou v MVC 3 nové nebo vylepšené:
- HttpNotFoundResult. Vrátí klientovi stavový kód HTTP 404.
-
RedirectResult. Vrátí dočasné přesměrování (stavový kód HTTP 302) nebo trvalé přesměrování (stavový kód HTTP 301) v závislosti na logickém parametru. Ve spojení s touto změnou má třída Controller nyní tři metody pro provádění trvalých přesměrování:
RedirectPermanent,RedirectToRoutePermanentaRedirectToActionPermanent. Tyto metody vrátí instanciRedirectResults vlastností nastavenouPermanentnatrue. - HttpStatusCodeResult. Vrátí stavový kód HTTP zadaný uživatelem.
Vylepšení Jazyka JavaScript a Ajax
Ve výchozím nastavení používají pomocníci Ajaxu a ověřování v MVC 3 nerušivý přístup JavaScriptu. Nevtíravý JavaScript se vyhne vložení inline JavaScriptu do HTML. Díky tomu je html menší a méně nepotřebný a usnadňuje prohození nebo přizpůsobení javascriptových knihoven. Pomocníci pro ověřování v MVC 3 ve výchozím nastavení také používají plugin jQueryValidate. Pokud chcete chování MVC 2, můžete zakázat nerušivé JavaScript pomocí nastavení souboruweb.config . Další informace o vylepšení javascriptu a ajaxu najdete v následujících zdrojích informací:
- Základní úvod do nevtíravého JavaScriptu na webu Wikipedie
- Brad Wilsonův nerušivý javascriptový post
- Brad Wilsonův nerušivý javascriptový ověřovací příspěvek
- Vytvoření aplikace MVC 3 pomocí Razoru a nerušivého JavaScriptu (kurz na webu ASP.NET)
- Poznámky k verzi MVC 3
Client-Side ověřování je ve výchozím nastavení povolené
V dřívějších verzích MVC musíte metodu Html.EnableClientValidation explicitně volat ze zobrazení, aby bylo možné povolit ověřování na straně klienta. V MVC 3 už to není potřeba, protože ověřování na straně klienta je ve výchozím nastavení povolené. (Toto nastavení můžete zakázat pomocí nastavení v souboru web.config .)
Aby ověřování na straně klienta fungovalo, musíte stále odkazovat na příslušné knihovny jQuery a jQuery Validation ve vašem webu. Tyto knihovny můžete hostovat na vlastním serveru nebo na ně odkazovat z sítě pro doručování obsahu (CDN), jako jsou sítě CDN od Microsoftu nebo Googlu.
Vzdálený validátor
ASP.NET MVC 3 podporuje novou třídu RemoteAttribute , která umožňuje využít výhod podpory vzdáleného validátoru modulu plug-in jQuery Validation. To umožňuje knihovně ověřování na straně klienta automaticky volat vlastní metodu, kterou definujete na serveru, aby mohla provádět logiku ověřování, která se dá provést pouze na straně serveru.
V následujícím příkladu atribut Remote určuje, že ověření klienta zavolá akci s názvem UserNameAvailable ve třídě UsersController, aby ověřilo pole UserName.
public class User
{
[Remote("UserNameAvailable", "Users")]
public string UserName { get; set; }
}
Následující příklad ukazuje odpovídající kontroler.
public class UsersController
{
public bool UserNameAvailable(string username)
{
if(MyRepository.UserNameExists(username))
{
return "false";
}
return "true";
}
}
Další informace o použití atributu Remote naleznete v tématu Postupy: Implementace vzdáleného ověřování v ASP.NET MVC v knihovně MSDN.
Podpora vazeb JSON
ASP.NET MVC 3 obsahuje integrovanou podporu vazeb JSON, která umožňuje metodám akcí přijímat data zakódovaná ve formátu JSON a svázat je s parametry metody akce. Tato funkce je užitečná ve scénářích zahrnujících klientské šablony a datová vazba. (Klientské šablony umožňují formátovat a zobrazit jednu datovou položku nebo sadu datových položek pomocí šablon, které se spouští na klientovi.) MVC 3 umožňuje snadno propojit klientské šablony s metodami akcí na serveru, který odesílá a přijímá data JSON. Další informace o podpoře vazeb JSON najdete v části Vylepšení Jazyka JavaScript a AJAX v blogovém příspěvku Scotta Guthrieho MVC 3 Preview.
Vylepšení ověření modelu
Atributy metadat DataAnnotations
ASP.NET MVC 3 podporuje DataAnnotations atributy metadat, například DisplayAttribute.
Třída ValidationAttribute
Třída ValidationAttribute byla vylepšena v rozhraní .NET Framework 4 tak, aby podporovala nové IsValid přetížení, které poskytuje další informace o aktuálním kontextu ověření, například o objektu, který se ověřuje. To umožňuje bohatší scénáře, ve kterých můžete aktuální hodnotu ověřit na základě jiné vlastnosti modelu. Nový CompareAttribute atribut například umožňuje porovnat hodnoty dvou vlastností modelu. V následujícím příkladu ComparePassword musí vlastnost odpovídat Password poli, aby byla platná.
public class User
{
[Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string ComparePassword { get; set; }
}
Ověřovací rozhraní
Rozhraní IValidatableObject umožňuje provádět ověřování na úrovni modelu a umožňuje poskytovat chybové zprávy ověření, které jsou specifické pro stav celkového modelu nebo mezi dvěma vlastnostmi v modelu. MVC 3 teď načítá chyby z IValidatableObject rozhraní při vazbě modelu a automaticky označí nebo zvýrazní ovlivněná pole v zobrazení pomocí integrovaných pomocných rutin formulářů HTML.
Rozhraní IClientValidatable umožňuje ASP.NET MVC zjistit za běhu, jestli validátor podporuje ověřování klientů. Toto rozhraní bylo navrženo tak, aby bylo možné ho integrovat s různými ověřovacími architekturami.
Další informace o ověřovacích rozhraních najdete v části Vylepšení ověření modeluv blogovém příspěvku Scotta Guthrieho MVC 3 Preview. (Všimněte si však, že odkaz na "IValidateObject" v blogu by měl být "IValidatableObject".)
Vylepšení injektování závislostí
ASP.NET MVC 3 poskytuje lepší podporu pro použití injektáže závislostí (DI) a pro integraci s kontejnery injektáže závislostí nebo inverze řízení (IOC). Podpora DI byla přidána v následujících oblastech:
- Kontrolery (registrace a vkládání továren kontrolerů, vkládání kontrolerů).
- Zobrazení (registrace a vkládání modulů zobrazení, vkládání závislostí do stránek zobrazení)
- Filtry akcí (vyhledání a vkládání filtrů)
- Pořadače modelů (registrace a vkládání)
- Zprostředkovatelé ověřování modelů (registrace a vkládání)
- Zprostředkovatelé metadat modelu (registrace a vkládání)
- Poskytovatelé hodnot (registrace a injektáž)
MVC 3 podporuje knihovnu Common Service Locator a jakýkoli kontejner DI, který podporuje rozhraní této knihovny IServiceLocator . Podporuje také nové IDependencyResolver rozhraní, které usnadňuje integraci rozhraní DI.
Další informace o DI v MVC 3 najdete v následujících zdrojích informací:
Další nové funkce
Integrace systému NuGet
ASP.NET MVC 3 automaticky nainstaluje a povolí NuGet jako součást jeho instalace. NuGet je bezplatný opensourcový správce balíčků, který usnadňuje hledání, instalaci a používání knihoven a nástrojů .NET ve vašich projektech. Funguje se všemi typy projektů sady Visual Studio (včetně webových formulářů ASP.NET a ASP.NET MVC).
NuGet umožňuje vývojářům, kteří udržují opensourcové projekty (například projekty, jako je Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor,RinoMocks a Elmah), zabalit knihovny a zaregistrovat je v online galerii. Vývojáři .NET, kteří chtějí použít některou z těchto knihoven, pak snadno najdou balíček a nainstalují ho do projektů, na které pracují.
S aktualizací nástrojů ASP.NET 3 obsahují šablony projektů předinstalované balíčky NuGet knihoven JavaScriptu, takže je možné je aktualizovat prostřednictvím NuGetu. Entity Framework Code First je také předinstalovaný jako balíček NuGet.
Další informace o NuGetu najdete v dokumentaci NuGet.
Ukládání části stránky do mezipaměti výstupu
ASP.NET MVC podporuje ukládání odpovědí na celou stránku do mezipaměti od verze 1. MVC 3 také podporuje částečné ukládání výstupu do mezipaměti, což umožňuje snadno ukládat oblasti do mezipaměti nebo fragmenty odpovědi. Další informace o ukládání do mezipaměti najdete v části Částečné ukládání výstupu stránky v blogovém příspěvku Scotta Guthrieho o kandidátu na vydání MVC 3 a v části Ukládání výstupu podřízené akce v části poznámky k verzi MVC 3.
Granulární kontrola nad ověřováním požadavků
ASP.NET MVC má integrované ověřování požadavků, které automaticky pomáhá chránit před útoky prostřednictvím injektáže XSS a HTML. Někdy ale chcete explicitně zakázat ověřování požadavků, například pokud chcete umožnit uživatelům publikovat obsah HTML (například v příspěvcích blogu nebo obsahu CMS). Nyní můžete k modelům nebo modelům zobrazení přidat atribut AllowHtml a tím zakázat ověřování požadavků během vazby modelu pro jednotlivé vlastnosti. Další informace o ověření požadavku najdete v následujících zdrojích informací:
- Oddíl Unobtrusive JavaScript and Validation v blogovém příspěvku Scotta Guthrieho o verzi kandidáta MVC 3.
- Poznámky k verzi MVC 3
Rozšiřitelné dialogové okno Nový projekt
V ASP.NET MVC 3 můžete do dialogového okna Nový projekt přidat šablony projektů, moduly zobrazení a architektury projektů testů jednotek.
Vylepšení generování uživatelského rozhraní šablon
ASP.NET šablony scaffoldingu MVC 3 lépe identifikují vlastnosti primárního klíče v modelech a správně je zpracovávají, než tomu bylo v dřívějších verzích MVC. (Šablony pro generování uživatelského rozhraní teď například zajišťují, aby se primární klíč nevygeneroval jako upravitelné pole formuláře.)
Ve výchozím nastavení nyní šablony pro vytváření a úpravy používají pomocnou rutinu Html.EditorFor místo pomocné rutiny Html.TextBoxFor. To zlepšuje podporu metadat v modelu ve formě atributů datových poznámek, když dialogové okno Přidat zobrazení vygeneruje zobrazení.
Nová přetížení pro Html.LabelFor a Html.LabelForModel
Byla přidána nová přetížení metod pro pomocné metody LabelFor a LabelForModel. Nové přetížení umožňují specifikovat nebo upravit text popisku.
Podpora kontroleru bez relací
V ASP.NET MVC 3 můžete určit, jestli má třída kontroleru používat stav relace, a pokud ano, zda má být stav relace jen pro čtení a zápis nebo jen pro čtení. Další informace o podpoře kontroleru bez relací najdete v poznámkách k verzi MVC 3.
Nová třída AdditionalMetadataAttribute
Atribut AdditionalMetadata můžete použít k naplnění slovníku ModelMetadata.AdditionalValues pro vlastnost modelu. Pokud má například model zobrazení vlastnost, která by se měla zobrazit pouze správci, můžete tuto vlastnost komentovat, jak je znázorněno v následujícím příkladu:
public class ProductViewModel
{
[AdditionalMetadata("AdminOnly", true)]
public string RefundCode {get; set;}
}
Tato metadata jsou k dispozici pro libovolnou šablonu zobrazení nebo editoru při vykreslení modelu zobrazení produktu. Je na vás interpretovat informace o metadatech.
Vylepšení AccountControlleru
AccountController v šabloně internetového projektu byl výrazně vylepšen.
Nová šablona intranetového projektu
Součástí je nová šablona intranetového projektu, která umožňuje ověřování systému Windows a odebere AccountController.