ASP.NET MVC 3

(obsahuje aktualizaci 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 osvědčený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!

Instalační program si můžete stáhnout tady.

Hlavní funkce

  • Integrovaný systém generování uživatelského rozhraní rozšiřitelný prostřednictvím NuGetu
  • Šablony projektů s podporou HTML 5
  • Výrazná zobrazení včetně nového modulu Razor View Engine
  • Výkonné háky s injektáží závislostí a filtry globálních 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.

Novinky v ASP.NET MVC 3

Instalace a nápověda

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ých do následujících částí:

Rozšiřitelné generování uživatelského rozhraní s integrací MvcScaffold

Nový systém generování uživatelského rozhraní usnadňuje nabít a začít produktivně pracovat, pokud jste s architekturou úplně nová, a automatizovat běžné úlohy vývoje, pokud máte zkušenosti a už víte, co děláte.

To podporuje nový balíček generování uživatelského rozhraní NuGet s názvem MvcScaffolding. Termín "Generování uživatelského rozhraní" se v mnoha softwarových technologiích používá jako "rychlé generování základní osnovy softwaru, který pak můžete upravovat a přizpůsobovat". Balíček generování uživatelského rozhraní, který vytváříme pro ASP.NET MVC, je velmi užitečný 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 užitečný a funkční kód, který pak můžete upravit a přizpůsobit podle svých potřeb. Ušetří vám to trauma z pohledu na prázdnou stránku a nemáte ponětí, kde začít!
  • Pokud dobře znáte ASP.NET MVC a teď zkoumáte některé nové technologie doplňků , jako je objektově-relační mapovač, modul zobrazení, testovací knihovna atd., protože tvůrce této technologie pro ni mohl také vytvořit balíček generování uživatelského rozhraní.
  • Pokud vaše práce zahrnuje opakované vytváření podobných tříd nebo souborů nějakého druhu, protože můžete vytvořit vlastní generování uživatelského rozhraní, které budou výstupem testovacích uchycení, skriptů nasazení nebo čehokoli jiného, co potřebujete. Všichni členové vašeho týmu můžou také používat vaše vlastní generování uživatelského rozhraní.

Mezi další funkce v MvcScaffolding patří:

  • Podpora pro projekty C# a VB
  • Podpora modulů zobrazení Razor a ASPX
  • Podporuje generování uživatelského rozhraní do ASP.NET oblastí MVC a použití vlastních rozložení nebo předloh zobrazení.
  • Výstup můžete snadno přizpůsobit úpravou šablon T4.
  • Pomocí vlastní logiky PowerShellu a vlastních šablon T4 můžete přidat zcela nové generování uživatelského rozhraní. Tyto (a všechny vlastní parametry, které jste jim zadali) se automaticky zobrazí v seznamu doplňování karet konzoly.
  • Můžete získat balíčky NuGet obsahující další generování uživatelského rozhraní pro různé technologie (např. pro LINQ to SQL teď existuje testování konceptu) a kombinovat je a sladit je dohromady.

Aktualizace nástrojů ASP.NET MVC 3 obsahuje skvělou podporu sady Visual Studio pro tento systém generování uživatelského rozhraní, například:

  • Dialogové okno Přidat kontroler teď podporuje úplné automatické generování akcí kontroleru Vytvořit, Číst, Aktualizovat a Odstranit a odpovídajících zobrazení. Ve výchozím nastavení tento kód pro přístup k datům vygeneruje pomocí EF Code First.
  • Dialogové okno Přidat kontroler podporuje rozšiřitelná generování uživatelského rozhraní prostřednictvím balíčků NuGet, jako je generování MvcScaf. To umožňuje zapojit do dialogového okna vlastní generování uživatelského rozhraní, které by vám umožnilo vytvářet generování uživatelského rozhraní pro jiné technologie přístupu k datům, jako je NHibernate nebo dokonce JET s ODBCDirect, pokud jste tak nakloněni.

Další informace o generování uživatelského rozhraní v ASP.NET MVC 3 najdete v následujících zdrojích informací:

Šablony projektů HTML 5

Dialogové okno Nový projekt obsahuje zaškrtávací políčko pro povolení šablon projektů ve verzích HTML 5. 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 se dodává s novým modulem 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 stisknutí kláves.
  • Razor se snadno naučíte, částečně proto, že je založená na existujících jazycích, jako je C# a Visual Basic.
  • Visual Studio obsahuje IntelliSense a zvýrazňování kódu pro syntaxi Razor.
  • Zobrazení Razor lze otestovat jednotky, aniž byste museli spustit aplikaci nebo spustit webový server.

Mezi nové funkce Razor patří:

  • @model syntaxe pro určení typu předávaného do zobrazení.
  • @* *@ syntaxe komentáře.
  • Možnost zadat výchozí hodnoty (například layoutpage) jednou pro celý web.
  • Metoda Html.Raw pro zobrazení textu bez kódování HTML.
  • Podpora sdílení kódu mezi více zobrazeními (soubory _viewstart.cshtml nebo _viewstart.vbhtml )

Razor obsahuje také nové pomocné rutiny HTML, například následující:

  • Chart. Vykreslí graf a nabídne stejné funkce jako ovládací prvek graf v ASP.NET 4.
  • WebGrid. Vykreslí datovou mřížku s funkcemi stránkování a řazení.
  • Crypto. Používá hashovací algoritmy k vytvoření správně nasolený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í:

Podpora pro moduly s více zobrazeními

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í pro projekt. Můžete zvolit Web Forms view engine (ASPX), Razor nebo opensourcový modul zobrazení, jako je Spark, NHaml nebo NDjango.

Vylepšení kontroleru

Globální filtry akcí

Někdy můžete chtít provést logiku buď před spuštěním metody akce, nebo po spuštění metody akce. K tomu ASP.NET MVC 2 poskytla filtry akcí. Filtry akcí jsou vlastní atributy, které poskytují deklarativní prostředky pro přidání chování před akcí a po akci ke konkrétním metodám 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 určit globální filtry tak, že je přidáte do GlobalFilters kolekce. Další informace o globálních filtrech akcí najdete v následujících zdrojích informací:

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 ke stejnému účelu ViewBag použít také poněkud jednodušší syntaxi s vlastností . Například místo zápisu ViewData["Message"]="text"můžete napsat ViewBag.Message="text". Pro použití vlastnosti není nutné definovat žádné třídy silného ViewBag typu. 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 překládat za běhu. Interně se ViewBag vlastnosti ukládají ve slovníku ViewData jako dvojice název/hodnota. (Poznámka: Ve většině předběžných verzí MVC 3 ViewBag byla vlastnost pojmenována ViewModel vlastnost .)

Nové typy ActionResult

Následující ActionResult 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 teď třída Controller obsahuje tři metody pro provádění trvalých přesměrování: RedirectPermanent, RedirectToRoutePermanenta RedirectToActionPermanent. Tyto metody vrátí instanci RedirectResult s vlastností nastavenou Permanent na true.
  • HttpStatusCodeResult. Vrátí uživatelem zadaný stavový kód HTTP.

Vylepšení JavaScriptu a Ajaxu

Ajax a pomocné rutiny ověřování v MVC 3 ve výchozím nastavení používají nevtíravý přístup k JavaScriptu. Nevtíravý JavaScript vyhýbá vložení vloženého JavaScriptu do HTML. Díky tomu je kód HTML menší a méně nepřehledný a usnadňuje přepínání nebo přizpůsobení knihoven JavaScriptu. Pomocné rutiny ověřování v MVC 3 také ve výchozím nastavení používají modul plug-in jQueryValidate . Pokud chcete, aby se MVC 2 chytnul, můžete zakázat nevtíravý JavaScript pomocí nastaveníweb.config souboru. Další informace o vylepšeních jazyka JavaScript a Ajax najdete v následujících zdrojích informací:

ověřování Client-Side povoleno ve výchozím nastavení

V dřívějších verzích MVC je potřeba explicitně volat metodu Html.EnableClientValidation ze zobrazení, aby se povolilo 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é. (Tuto možnost můžete zakázat pomocí nastavení v souboruweb.config .)

Aby ověřování na straně klienta fungovalo, musíte na webu odkazovat na příslušné knihovny jQuery a jQuery Validation. Tyto knihovny můžete hostovat na vlastním serveru nebo na ně odkazovat ze sítě pro doručování obsahu (CDN), jako jsou sítě CDN od Microsoftu nebo Google.

Vzdálený validátor

ASP.NET MVC 3 podporuje novou třídu RemoteAttribute , která umožňuje využívat podporu 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 za účelem provedení logiky ověřování, kterou lze provést pouze na straně serveru.

V následujícím příkladu Remote atribut určuje, že ověření klienta zavolá akci s názvem UserNameAvailableUsersController třídy k ověření UserName pole.

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ěření v ASP.NET MVC v knihovně MSDN.

Podpora vazeb JSON

ASP.NET MVC 3 zahrnuje 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é vazby. (Šablony klienta umožňují formátovat a zobrazit jednu datovou položku nebo sadu datových položek pomocí šablon, které se spouští v klientovi.) MVC 3 umožňuje snadno propojit klientské šablony pomocí metod akcí na serveru, které odesílají a přijímají data JSON. Další informace o podpoře vazeb JSON najdete v části Vylepšení JavaScriptu a AJAX v blogovém příspěvku Scotta Guthrieho o MVC 3 Preview.

Vylepšení ověřování modelu

Atributy metadat DataAnnotations

ASP.NET MVC 3 podporuje DataAnnotations atributy metadat, jako DisplayAttributeje .

Třída ValidationAttribute

Třída ValidationAttribute byla v rozhraní .NET Framework 4 vylepšena tak, aby podporovala nové IsValid přetížení, které poskytuje více informací o aktuálním kontextu ověření, například o tom, který objekt se ověřuje. To umožňuje bohatší scénáře, ve kterých můžete ověřit aktuální hodnotu na základě jiné vlastnosti modelu. Například nový CompareAttribute atribut umožňuje porovnat hodnoty dvou vlastností modelu. V následujícím příkladu ComparePassword se vlastnost musí shodovat s polem Password , aby byla platná.

public class User
{ 
    [Required]
    public string Password { get; set; } 
    [Required, Compare("Password")] 
    public string ComparePassword { get; set; } 
}

Ověřovací rozhraní

IValidatableObject Rozhraní umožňuje provádět ověření na úrovni modelu a umožňuje poskytovat ověřovací chybové zprávy, které jsou specifické pro stav celkového modelu nebo mezi dvěma vlastnostmi v rámci 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ěřování modelů v blogovém příspěvku Scotta Guthrieho o MVC 3 Preview. (Všimněte si ale, že odkaz na IValidateObject v blogu by měl být IValidatableObject.)

Vylepšení injektáže 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 pro 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í na stránky zobrazení)
  • Filtry akcí (vyhledání a vložení filtrů)
  • Pořadače modelů (registrace a vkládání).
  • Zprostředkovatelé ověření modelu (registrace a vkládání).
  • Poskytovatelé metadat modelu (registrace a vkládání)
  • Zprostředkovatelé hodnot (registrace a vkládání).

MVC 3 podporuje knihovnu Common Service Locator a jakýkoli kontejner závislostí, který podporuje rozhraní této IServiceLocator knihovny. 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 NuGetu

ASP.NET MVC 3 automaticky nainstaluje a povolí NuGet v rámci instalace. NuGet je bezplatný opensourcový správce balíčků, který usnadňuje vyhledává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ě ASP.NET Web Forms a ASP.NET MVC).

NuGet umožňuje vývojářům, kteří spravují open source projekty (například projekty jako Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks a Elmah), zabalit knihovny a zaregistrovat je do online galerie. 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ých pracují.

S aktualizací nástrojů ASP.NET 3 šablony projektů zahrnují předinstalované balíčky NuGet knihoven JavaScriptu, takže je možné aktualizovat prostřednictvím balíčku NuGet. Entity Framework Code First je také předinstalovaný jako balíček NuGet.

Další informace o NuGetu najdete v dokumentaci k NuGetu.

Partial-Page ukládání výstupu do mezipaměti

ASP.NET MVC podporuje ukládání výstupních odpovědí na celou stránku do mezipaměti od verze 1. MVC 3 také podporuje ukládání výstupu částečné stránky do mezipaměti, což umožňuje snadno ukládat oblasti nebo fragmenty odpovědi do mezipaměti. Další informace o ukládání do mezipaměti najdete v části Ukládání výstupu částečné stránky do mezipaměti v blogovém příspěvku Scotta Guthrieho o kandidátovi verze MVC 3 a v části Ukládání výstupu podřízených akcí do mezipaměti v poznámkách k verzi MVC 3.

Podrobná 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 XSS a prostřednictvím injektáže HTML. Někdy ale chcete ověření žádosti explicitně zakázat, například pokud chcete uživatelům umožnit publikovat obsah HTML (například v položkách blogu nebo obsahu CMS). Nyní můžete přidat atribut AllowHtml do modelů nebo zobrazit modely a zakázat ověřování požadavků na základě vlastnosti během vazby modelu. Další informace o ověření žádosti najdete v následujících zdrojích informací:

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í šablon

ASP.NET šablony generování MVC 3 umožňují lépe identifikovat vlastnosti primárního klíče v modelech a odpovídajícím způsobem je zpracovávat než v dřívějších verzích MVC. (Například šablony generování uživatelského rozhraní teď zajišťují, že primární klíč není vygenerovaný jako upravitelné pole formuláře.)

Ve výchozím nastavení teď vygenerované vytváření a úpravy používají Html.EditorFor pomocnou rutinu 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í metody pro LabelFor pomocné metody a LabelForModel . Nová přetížení umožňují zadat nebo přepsat text popisku.

Podpora kontroleru bez relací

V ASP.NET MVC 3 můžete určit, jestli chcete, aby třída kontroleru používala stav relace, a pokud ano, jestli má být stav relace jen pro čtení/zápis nebo jen pro čtení. Další informace o podpoře kontroleru bez relací najdete v tématu Zpráva k vydání verze MVC 3.

Nová třída AdditionalMetadataAttribute

K naplnění ModelMetadata.AdditionalValues slovníku pro vlastnost modelu můžete použít atribut AdditionalMetadata. Pokud má například model zobrazení vlastnost, která by měla být zobrazena pouze správci, můžete tuto vlastnost anotovat, 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 všechny šablony zobrazení nebo editoru při vykreslení modelu zobrazení produktu. Interpretace informací o metadatech je na vás.

Vylepšení kontroly účtů

Byl výrazně vylepšen accountcontroller v šabloně projektu Internet.

Nová šablona intranetového projektu

Je zahrnuta nová šablona intranetového projektu, která umožňuje ověřování systému Windows a odebere AccountController.