ASP.NET poznámky k verzi MVC 3
Upgrade projektu ASP.NET MVC 2 na aktualizaci nástrojů MVC 3 ASP.NET
ASP.NET aktualizace nástrojů MVC 3 (12. dubna 2011)
- Dialogové okno Přidat kontroler teď může vygenerovat kontrolery se zobrazeními a kódem pro přístup k datům.
- Vylepšení dialogového okna "nový projekt ASP.NET MVC 3"
- Šablony projektů teď zahrnují Modernr 1.7.
- Šablony projektů zahrnují aktualizované verze jQuery, uživatelského rozhraní jQuery a ověřování jQuery.
- Šablony projektů teď zahrnují ADO.NET Entity Framework 4.1 jako předinstalovaný balíček NuGet.
- Šablony projektů zahrnují javascriptové knihovny jako předinstalované balíčky NuGet.
- Známé problémy
ASP.NET MVC 3 RTM (13. ledna 2011)
- Změna: Aktualizace verze uživatelského rozhraní jQuery na 1.8.7
- Změna: Změna výchozího ModelMetadataProvider zpět na DataAnnotationsModelMetadataProvider
- Opraveno: Vložení části výrazu Razor, který obsahuje prázdné znaky, způsobí, že se vrátí zpět.
- Opraveno: Přejmenování souboru Razor, který je otevřen v editoru, zakáže zabarvení syntaxe a IntelliSense.
- Známé problémy
- Zásadní změny
ASP.NET MVC 3 Release Candidate 2 (10. prosince 2010)
- Šablony projektů se změnily tak, aby zahrnovaly jQuery 1.4.4, jQuery Validation 1.7 a uživatelské rozhraní jQuery 1.8.6y UI 1.8.6
- Přidání třídy AdditionalMetadataAttribute
- Vylepšené generování uživatelského rozhraní zobrazení
- Přidání Html.Raw – metoda
- Přejmenování vlastnosti Controller.ViewModel a vlastnosti ViewBag na ViewBag
- Přejmenování třídy ControllerSessionStateAttribute na SessionStateAttribute
- Přejmenování vlastnosti RemoteAttribute "Fields" na "AdditionalFields"
- Přejmenováno SkipRequestValidationAttribute na AllowHtmlAttribute
- Změna metody Html.ValidationMessage pro zobrazení první užitečné chybové zprávy
- Fixed @model Declaration to not Add Whitespace to the Document
- Přidání vlastnosti FileExtensions pro zobrazení modulů pro podporu názvů souborů specifických pro moduly
- Oprava pomocné rutiny LabelFor pro generování správné hodnoty atributu For
- Oprava metody RenderAction, která dává explicitním hodnotám prioritu během vazby modelu
- Zásadní změny
- Známé problémy
ASP.NET MVC 3 Release Candidate (9. listopadu 2010)
- Nové funkce v ASP.NET MVC 3 RC
- Správce balíčků NuGet
- Vylepšené dialogové okno Nový projekt
- Kontrolery bez relací
- Nové ověřovací atributy
- Nová přetížení pro metody LabelFor a LabelForModel
- Ukládání výstupu podřízené akce do mezipaměti
- Vylepšení dialogového okna Přidat zobrazení
- Podrobné ověření požadavku
- Zásadní změny
- Známé problémy
ASP. Poznámky k beta verzi MVC 3 (6. října 2010)
- Nové funkce v beta verzi ASP.NET MVC 3
- Správce balíčků NuPack
- Vylepšené dialogové okno Nový projekt
- Zjednodušený způsob zadávání modelů se silnými typy v zobrazeních Razor
- Podpora nových pomocných metod webových stránek ASP.NET
- Další podpora injektáže závislostí
- Nová podpora neobtěžujícího jazyka jQuery založeného na ajaxu
- Nová podpora nepotvrzujícího ověřování jQuery
- Nové příznaky pro ověřování klientů v celé aplikaci a nerušivé JavaScript
- Nová podpora kódu, který se spouští před spuštěním zobrazení
- Nová podpora syntaxe VBHTML Razor
- Podrobnější kontrola nad ValidateInputAttribute
- Pomocné rutiny převádějí podtržítka na pomlčky pro názvy atributů HTML určené pomocí anonymních objektů.
- Opravy chyb
- Zásadní změny
- Známé problémy
Přehled
Tento dokument popisuje vydání ASP.NET MVC 3 RTM pro Visual Studio 2010. ASP.NET MVC je architektura pro vývoj webových aplikací, které používají model MVC (Model-View-Controller). Instalační program ASP.NET MVC 3 obsahuje následující komponenty:
- komponenty modulu runtime ASP.NET MVC 3
- ASP.NET nástroje MVC 3 sady Visual Studio 2010
- ASP.NET komponent runtime webových stránek
- ASP.NET nástroje sady Visual Studio 2010
- Microsoft Správce balíčků pro .NET (NuGet)
- Aktualizace pro Visual Studio 2010, která umožňuje podporu syntaxe Razor. (Podrobnosti najdete v článku znalostní báze 2483190.)
Úplnou sadu zpráv k vydání verze pro každou předběžnou verzi ASP.NET MVC 3 najdete na webu ASP.NET na následující adrese URL:
https://www.asp.net/learn/whitepapers/mvc3-release-notes
Poznámky k instalaci
Pokud chcete nainstalovat ASP.NET MVC 3 RTM pomocí instalačního programu webové platformy (Web PI), navštivte následující stránku:
https://www.microsoft.com/web/gallery/install.aspx?appid=MVC3
Případně si můžete stáhnout instalační program pro ASP.NET MVC 3 RTM pro Visual Studio 2010 z následující stránky:
https://go.microsoft.com/fwlink/?LinkID=208140
ASP.NET MVC 3 je možné nainstalovat a spustit souběžně s ASP.NET MVC 2.
Požadavky na software
Komponenty ASP.NET MVC 3 za běhu vyžadují následující software:
.NET Framework verze 4.
nástroje ASP.NET MVC 3 Visual Studio 2010 vyžadují následující software:
Visual Studio 2010 nebo Visual Web Developer 2010 Express
Dokumentace
Dokumentace k ASP.NET MVC je k dispozici na webu MSDN na následující adrese URL:
https://go.microsoft.com/fwlink/?LinkId=205717
Kurzy a další informace o ASP.NET MVC jsou k dispozici na stránce MVC webu ASP.NET na následující adrese URL:
Technická podpora
Toto je plně podporovaná verze. Informace o získání technické podpory najdete na webu podpora Microsoftu.
Můžete také publikovat otázky týkající se této verze na fóru ASP.NET MVC, kde členové komunity ASP.NET často mohou poskytovat neformální podporu:
https://forums.asp.net/1146.aspx
Upgrade projektu ASP.NET MVC 2 na aktualizaci nástrojů MVC 3 ASP.NET
ASP.NET MVC 3 je možné nainstalovat souběžně s ASP.NET MVC 2 na stejném počítači, což umožňuje flexibilně zvolit, kdy upgradovat aplikaci ASP.NET MVC 2 na ASP.NET MVC 3.
Pokud chcete existující aplikaci ASP.NET MVC 2 ručně upgradovat na verzi 3, postupujte takto:
Na počítači vytvořte nový prázdný projekt ASP.NET MVC 3. Tento projekt bude obsahovat některé soubory, které jsou potřeba pro upgrade.
Zkopírujte následující soubory z projektu ASP.NET MVC 3 do odpovídajícího umístění projektu ASP.NET MVC 2. Budete muset aktualizovat všechny odkazy na knihovnu jQuery tak, aby zohlednily nový název souboru (jQuery-1.5.1.js):
- /Views/Web.config
- /packages.config
- /scripts/*.js
- /Content/themes/*.*
Zkopírujte složku balíčků v kořenovém adresáři prázdného řešení projektu ASP.NET MVC 3 do kořenového adresáře vašeho řešení, který je v adresáři, kde se nachází soubor .sln řešení.
Pokud váš projekt ASP.NET MVC 2 obsahuje jakékoli oblasti, zkopírujte soubor /Views/Web.config do složky Zobrazení každé oblasti.
V obou souborech Web.config v projektu ASP.NET MVC 2 globálně vyhledejte a nahraďte ASP.NET verzi MVC. Vyhledejte následující:
System.Web.Mvc, Version=2.0.0.0
Nahraďte ho následujícím kódem:
System.Web.Mvc, Version=3.0.0.0
V Průzkumník řešení odstraňte odkaz na System.Web.Mvc (který odkazuje na knihovnu DLL z verze 2) a pak přidejte odkaz na System.Web.Mvc (v3.0.0.0.0).
Přidejte odkaz na System.Web.WebPages.dll a System.Web.Helpers.dll. Tato sestavení jsou umístěna v následujících složkách:
- %ProgramFiles%\ Microsoft ASP.NET\ASP.NET MVC 3\Sestavení
- %ProgramFiles%\ Microsoft ASP.NET\ASP.NET Webové stránky\v1.0\Sestavení
V Průzkumník řešení klikněte pravým tlačítkem myši na název projektu a vyberte Uvolnit projekt. Potom znovu klikněte pravým tlačítkem myši na název projektu a vyberte Upravit název projektu.csproj.
Vyhledejte element ProjectTypeGuids a nahraďte {F85E285D-A4E0-4152-9332-AB1D724D3325} {E53F8FEA-EAE0-44A6-8774-FFD645390401}.
Uložte změny, klikněte pravým tlačítkem myši na projekt a pak vyberte Znovu načíst projekt.
Do kořenového souboru Web.config aplikace přidejte do oddílu sestavení následující nastavení.
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Pokud projekt odkazuje na knihovny třetích stran kompilované pomocí ASP.NET MVC 2, přidejte následující zvýrazněný element bindingRedirect do souboru Web.config v kořenovém adresáři aplikace v části konfigurace :
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
Změny v aktualizaci nástrojů ASP.NET MVC 3
Tato část popisuje změny provedené ve verzi ASP.NET MVC 3 Tools Update od verze ASP.NET MVC 3 RTM.
Dialogové okno Přidat kontroler teď může vygenerovat kontrolery se zobrazeními a kódem pro přístup k datům.
Generování uživatelského rozhraní je způsob rychlého generování kontroleru a zobrazení pro vaši aplikaci. Po vygenerování kódu ho můžete upravit tak, aby splňoval požadavky projektu.
Chcete-li spustit dialogové okno Přidat kontroler v ASP.NET MVC 3, klepněte pravým tlačítkem myši na složku Kontrolery v Průzkumník řešení, klepněte na tlačítko Přidat a potom klepněte na tlačítko Kontroler. Dialogové okno bylo vylepšeno tak, aby nabízelo další možnosti generování.
Ve výchozím nastavení jsou k dispozici tři šablony generování.
Prázdný kontroler
Tato šablona vygeneruje prázdný soubor kontroleru. Tato šablona je ekvivalentní tomu, že v předchozích verzích ASP.NET MVC nekontroluje přidávání akcí pro vytváření, úpravy, podrobnosti a odstraňování scénářů. Pokud zvolíte tuto možnost, nebudou k dispozici žádné další možnosti.
Kontroler s prázdnými akcemi čtení a zápisu
Tato šablona vygeneruje soubor kontroleru, který obsahuje všechny požadované metody akcí, ale žádný kód implementace v metodách. Tato šablona je ekvivalentní kontrole akcí přidání pro vytváření, úpravy, podrobnosti a odstraňování scénářů v předchozích verzích ASP.NET MVC. Pokud zvolíte tuto možnost, nebudou k dispozici žádné další možnosti.
Kontroler s akcemi čtení a zápisu pomocí Entity Frameworku
Tato šablona umožňuje rychle vytvořit pracovní uživatelské rozhraní pro zadávání dat. Generuje kód, který zpracovává celou řadu běžných požadavků a scénářů, například:
Přístup k datům. Vygenerovaný kód čte a zapisuje entity do databáze. Funguje s přístupem Entity Framework Code First, pokud zvolíte existující třídu kontextu dat nebo pokud necháte šablonu vygenerovat novou třídu DbContext . Funguje také s přístupem Entity Framework Database First nebo Model First, pokud zvolíte existující třídu ObjectContext .
Ověření. Vygenerovaný kód používá ASP.NET vazby modelu MVC a funkce metadat, aby se odesílání formulářů ověřilo podle pravidel deklarovaných ve vaší třídě modelu. To zahrnuje integrovaná ověřovací pravidla, jako jsou povinné a stringLength atributy a vlastní ověřovací pravidla.
Vztahy 1:N. Pokud definujete relace cizích klíčů 1:N mezi třídami modelu, vygenerovaný kód vytvoří rozevírací seznamy pro výběr souvisejících entit. Můžete například definovat následující třídy modelu následující konvence Entity Framework Code First:
public class Product { public int ProductId { get; set; } [Required] public string Name { get; set; } // Product belongs to Category public int CategoryId { get; set; } public virtual Category Category { get; set; } } public class Category { public int CategoryId { get; set; } [Required] public string Name { get; set; } }
Když pak vygenerujete kontroler pro třídu Product , jeho zobrazení umožní uživatelům zvolit objekt Category pro každou instanci produktu .
Tato šablona umožňuje další možnosti v dialogovém okně Přidat kontroler . U třídy Model můžete zvolit libovolnou třídu modelu v řešení, která určuje typ dat, která budou uživatelé moct vytvářet nebo upravovat:
Pokud chcete použít Entity Framework Code First, můžete zvolit libovolnou třídu modelu.
Pokud používáte Entity Framework Database First nebo Entity Framework Model First, nezapomeňte zvolit třídu entity definovanou v konceptuálním modelu.
Pro třídu Data Context můžete provést tyto volby:
- Pokud chcete použít Code First a nemáte žádnou existující třídu kontextu dat, zvolte **Nový kontext dat **. Třída kontextu dat se pak vygeneruje za vás.
- Pokud chcete použít Code First a máte existující třídu kontextu dat, zvolte ji zde. Aktualizuje se, aby se zachovala třída modelu, kterou jste vybrali.
- Pokud používáte Database First nebo Model First, zvolte zde třídu kontextu objektu.
Pro zobrazení zvolte modul zobrazení, který chcete použít, nebo zvolte Žádné, pokud nechcete vygenerovat žádná zobrazení.
Můžete vybrat Upřesnit možnosti a zadat další možnosti pro vygenerovaná zobrazení. Můžete například zvolit rozložení nebo stránku předlohy, která se má použít.
Vylepšení dialogového okna "nový projekt ASP.NET MVC 3"
Dialogové okno, které použijete k vytvoření nových projektů ASP.NET MVC 3, obsahuje několik vylepšení, jak je uvedeno níže.
Nová šablona intranetového projektu
Seznam šablon projektu obsahuje novou šablonu intranetové aplikace. Tato šablona obsahuje nastavení pro vytvoření webové aplikace pomocí ověřování systému Windows místo ověřování pomocí formulářů. Vzhledem k tomu, že intranetová aplikace vyžaduje některá nastavení služby IIS, která nelze zapouzdřit do šablony projektu, obsahuje šablona soubor readme s pokyny, jak nastavit, aby šablona projektu fungovala ve službě IIS. Dokumentace k nové šabloně intranetové aplikace je k dispozici na webu MSDN na následující adrese URL:
https://msdn.microsoft.com/library/gg703322(VS.98).aspx
Project templates are now HTML5 enabled
Dialogové okno nový projekt teď obsahuje možnost přidat do šablon projektů funkce specifické pro HTML5. Výběrem této možnosti se vygenerují zobrazení, která obsahují nové html5 <header>
, <footer>
a <navigation>
elementy.
Upozorňujeme, že starší verze prohlížečů nepodporují značky specifické pro HTML5. Chcete-li toto omezení vyřešit, šablony projektů HTML5 obsahují odkaz na knihovnu Modernizace. (Viz další část.)
Šablony projektů teď zahrnují Modernr 1.7.
Modernizace je javascriptová knihovna, která umožňuje podporu šablon stylů CSS 3 a HTML5 v prohlížečích, které tyto funkce zatím nepodporují. Tato knihovna je součástí předinstalovaného balíčku NuGet v šablonách pro projekty ASP.NET MVC 3. Další informace o modernizátoru naleznete v tématu http://www.modernizr.com/.
Šablony projektů zahrnují aktualizované verze jQuery, uživatelského rozhraní jQuery a ověřování jQuery.
Šablony projektů teď obsahují následující verze skriptů jQuery:
- jQuery 1.5.1
- jQuery Validation 1.8
- Uživatelské rozhraní jQuery 1.8.11
Tyto knihovny jsou součástí předinstalovaných balíčků NuGet.
Šablony projektů teď zahrnují ADO.NET Entity Framework 4.1 jako předinstalovaný balíček NuGet.
ADO.NET Entity Framework 4.1 obsahuje funkci Code First. Code First je nový vývojový model pro ADO.NET Entity Framework, který poskytuje alternativu k existujícím vzorům Database First a Model First.
Code First se zaměřuje na definování modelu pomocí tříd POCO ("prostých starých objektů CLR") napsaných v jazyce Visual Basic nebo C#. Tyto třídy je pak možné mapovat na existující databázi nebo použít k vygenerování schématu databáze. Další konfiguraci je možné zadat pomocí atributů DataAnnotations nebo pomocí rozhraní API fluent.
Dokumentace k používání code Firstwith ASP.NET MVC je k dispozici na webu ASP.NET na následujících adresách URL:
https://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs https://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
Šablony projektů zahrnují javascriptové knihovny jako předinstalované balíčky NuGet.
Když vytvoříte nový projekt ASP.NET MVC 3, projekt bude obsahovat dříve zmíněné soubory JavaScriptu (například knihovnu Modernizace), a to tak, že je nainstaluje pomocí NuGetu, a ne přímo přidá skripty do složky Scripts v obsahu šablony projektu. To umožňuje použít NuGet k aktualizaci skriptů na nejnovější verzi při vydání nových verzí skriptů.
Například vzhledem k frekvenci nových verzí jQuery bude verze jQuery, která je součástí šablony projektu, v určitém okamžiku zastaralé. Vzhledem k tomu, že jQuery je součástí nainstalovaného balíčku NuGet, budete upozorněni v dialogovém okně NuGet, jakmile budou k dispozici novější verze jQuery.
Protože jQuery obsahuje číslo verze v názvu souboru, aktualizace jQuery na nejnovější verzi také vyžaduje aktualizaci <script>
značky, která odkazuje na soubor jQuery, aby používal nový název souboru. Jiné zahrnuté knihovny skriptů nezahrnují číslo verze do názvu skriptu, takže je lze snadněji aktualizovat na jejich nejnovější verze.
Známé problémy v ASP.NET MVC 3
- V některých případech může instalace selhat s chybovou zprávou "Instalace selhala s kódem chyby (0x80070643)". Informace o řešení tohoto problému naleznete v článku znalostní báze KnowledgeBase 2531566.
- Generování uživatelského rozhraní pro přidání kontroleru nevygeneruje entity, které využívají podporu dědičnosti entit v rámci entity Framework. Například vzhledem k základní třídě person , která je zděděna třídou Student , generování uživatelského rozhraní třídy Student bude mít za následek vygenerovaný kód, který se nezkompiluje.
- Vytvoření nového projektu ASP.NET MVC 3 ve složce řešení způsobí chybu NullReferenceException . Alternativním řešením je vytvořit projekt ASP.NET MVC 3 v kořenovém adresáři řešení a pak ho přesunout do složky řešení.
- Funkce IntelliSense pro syntaxi Razor nefunguje při instalaci ReSharperu. Pokud máte nainstalovaný ReSharper a chcete využít výhod podpory Razor IntelliSense v ASP.NET MVC 3, podívejte se na příspěvek Razor Intellisense a ReSharper na Hadi Hariri blog, který popisuje způsoby jejich současného použití společně.
- Během instalace se v dialogovém okně přijetí smlouvy EULA zobrazí licenční podmínky v okně, které je menší, než je zamýšleno.
- Při úpravách zobrazení Razor (.cshtml nebo .soubor vbhtml ), zobrazení. ASP.NET MVC 3 neobsahuje žádné fragmenty kódu pro zobrazení Razor.. Aspxselecting a code snippet for ASP.NET MVC will show snippets for
- Pokud nainstalujete ASP.NET MVC 3 pro Visual Web Developer Express na počítač, na kterém není nainstalovaná sada Visual Studio, a pak později nainstalujte Sadu Visual Studio, musíte přeinstalovat ASP.NET MVC 3. Visual Studio a Visual Web Developer Express sdílejí komponenty, které jsou upgradovány instalačním programem ASP.NET MVC 3. Stejný problém platí, pokud nainstalujete ASP.NET MVC 3 pro Visual Studio na počítač, který nemá Visual Web Developer Express, a pak později nainstaluje Visual Web Developer Express.
Změny v ASP.NET MVC 3 RTM
Tato část popisuje změny a opravy chyb provedených ve verzi ASP.NET MVC 3 RTM od verze RC2.
Změna: Aktualizace verze uživatelského rozhraní jQuery na 1.8.7
Šablony projektů ASP.NET MVC pro Visual Studio byly aktualizovány tak, aby zahrnovaly nejnovější verzi knihovny uživatelského rozhraní jQuery. Šablony také zahrnují minimální sadu souborů prostředků vyžadovaných uživatelským rozhraním jQuery, jako jsou přidružené soubory CSS a obrázku.
Změna: Změna výchozího ModelMetadataProvider zpět na DataAnnotationsModelMetadataProvider
Verze RC2 ASP.NET MVC 3 zavedla třídu CachedDataAnnotationsMetadataProvider, která poskytovala ukládání do mezipaměti nad existující třídu DataAnnotationsModelMetadataProvider jako vylepšení výkonu. V této implementaci byly však hlášeny některé chyby, takže změna byla vrácena a přesunuta do projektu MVC Futures, který je k dispozici v ASP.NET WebStack.
Opraveno: Vložení části výrazu Razor, který obsahuje prázdné znaky, způsobí, že se vrátí zpět.
V předběžných verzích ASP.NET MVC 3 vložíte část výrazu Razor, která obsahuje prázdné znaky do souboru Razor, výsledný výraz se vrátí zpět. Představte si například následující blok kódu Razor:
@SomeMethod("first param",
100)
@AnotherMethod()
Pokud vyberete text "první param" v první metodě a vložíte ho jako argument do druhé metody, výsledek je následující:
@AnotherMethod(param""first)
Správné chování spočívá v tom, že operace vložení by měla vést k následujícímu:
@AnotherMethod("first param")
Tento problém je opravený ve verzi RTM, aby se výraz během operace vložení správně zachoval.
Opraveno: Přejmenování souboru Razor, který je otevřen v editoru, zakáže zabarvení syntaxe a IntelliSense.
Přejmenování souboru Razor pomocí Průzkumník řešení při otevření souboru v okně editoru způsobí, že zvýraznění syntaxe a IntelliSense přestane u daného souboru fungovat. Opravili jsme to, aby se po přejmenování zachovalo zvýraznění a IntelliSense.
Známé problémy s ASP.NET MVC 3 RTM
- Pokud visual Studio 2010 SP1 beta zavřete, když je otevřená konzola NuGet Správce balíčků, Visual Studio se chybově ukončí a pokusí se restartovat. Tato oprava bude opravena ve verzi RTM sady Visual Studio 2010 SP1.
- Instalační program ASP.NET MVC 3 dokáže nainstalovat pouze počáteční verzi správce balíčků NuGet. Po instalaci počáteční verze můžete NuGet nainstalovat a aktualizovat pomocí správce rozšíření sady Visual Studio. Pokud už máte NuGet nainstalovaný, přejděte do galerie rozšíření sady Visual Studio a aktualizujte ji na nejnovější verzi NuGetu.
- Vytvoření nového projektu ASP.NET MVC 3 ve složce řešení způsobí chybu NullReferenceException . Alternativním řešením je vytvořit projekt ASP.NET MVC 3 v kořenovém adresáři řešení a pak ho přesunout do složky řešení.
- Dokončení instalačního programu může trvat mnohem déle než předchozí verze ASP.NET MVC. Je to proto, že aktualizuje komponenty sady Visual Studio 2010.
- Funkce IntelliSense pro syntaxi Razor nefunguje při instalaci ReSharperu. Pokud máte nainstalovaný ReSharper a chcete využít výhod podpory Razor IntelliSense v ASP.NET MVC 3, podívejte se na příspěvek Razor Intellisense a ReSharper na Hadi Hariri blog, který popisuje způsoby jejich současného použití společně.
- Zobrazení CCSHTML a VBHTML vytvořená s beta verzí ASP.NET MVC 3 nemají správně nastavenou akci sestavení s výsledkem, že tyto typy zobrazení jsou při publikování projektu vynechány. Hodnota Akce sestavení pro tyto soubory by měla být nastavena na "Obsah". ASP.NET MVC 3 RTM tento problém řeší u nových souborů, ale neopravuje nastavení existujících souborů pro projekt vytvořený s předběžnými verzemi.
- Během instalace se v dialogovém okně přijetí smlouvy EULA zobrazí licenční podmínky v okně, které je menší, než je zamýšleno.
- Když upravujete zobrazení Razor (soubor .cshtml), položka nabídky Přejít na kontroler v sadě Visual Studio nebude dostupná a neobsahuje žádné fragmenty kódu.
- Pokud nainstalujete ASP.NET MVC 3 pro Visual Web Developer Express na počítač, na kterém není nainstalovaná sada Visual Studio, a pak později nainstalujte Sadu Visual Studio, musíte přeinstalovat ASP.NET MVC 3. Visual Studio a Visual Web Developer Express sdílejí komponenty, které jsou upgradovány instalačním programem ASP.NET MVC 3. Stejný problém platí, pokud nainstalujete ASP.NET MVC 3 pro Visual Studio na počítač, který nemá Visual Web Developer Express, a pak později nainstaluje Visual Web Developer Express.
Zásadní změny v ASP.NET MVC 3
- V předchozích verzích ASP.NET MVC se filtry akcí vytvářejí podle požadavku s výjimkou několika případů. Toto chování nikdy nebylo zaručené chování, ale pouze podrobnosti implementace a kontrakt pro filtry byl považovat za bezstavové. V ASP.NET MVC 3 se filtry ukládají do mezipaměti agresivněji. Proto může dojít k narušení všech filtrů vlastních akcí, které nesprávně ukládají stav instance.
- Pořadí provádění filtrů výjimek se změnilo pro filtry výjimek, které mají stejnou hodnotu Objednávky . V ASP.NET MVC 2 a starší filtry výjimek na kontroleru, které mají stejnou hodnotu Order jako u metody akce, se spustí před filtry výjimek v metodě akce. Obvykle se jedná o případ, kdy se filtry výjimek použijí bez zadané hodnoty Objednávky . V ASP.NET MVC 3 bylo toto pořadí obráceno, aby se nejprve spustila nejvýraznější obslužná rutina výjimek. Stejně jako v předchozích verzích platí, že pokud je vlastnost Order explicitně zadána, filtry se spouští v zadaném pořadí.
- Do základní třídy VirtualPathProviderViewEngine byla přidána nová vlastnost s názvem FileExtensions. Když ASP.NET vyhledá zobrazení podle cesty (ne podle názvu), budou se považovat pouze zobrazení s příponou souboru obsaženou v seznamu určeném touto novou vlastností. Jedná se o zásadní změnu v aplikacích, ve kterých je zaregistrovaný vlastní zprostředkovatel sestavení, aby bylo možné povolit vlastní příponu souboru pro zobrazení webových formulářů a kde zprostředkovatel odkazuje na tato zobrazení pomocí úplné cesty místo názvu. Alternativním řešením je změnit hodnotu vlastnosti FileExtensions tak, aby zahrnovala vlastní příponu souboru.
- Implementace vlastního kontroleru, které přímo implementují IControllerFactory rozhraní musí poskytnout implementaci nové GetControllerSessionBehavior metoda, která byla přidána do rozhraní v této verzi. Obecně se doporučuje neimplementovat toto rozhraní přímo a místo toho odvodit třídu z DefaultControllerFactory.
Změny v ASP.NET MVC 3 RC2
Tato část popisuje změny (nové funkce a opravy chyb) provedené ve verzi ASP.NET MVC 3 RC2 od verze RC.
Šablony projektů se změnily tak, aby zahrnovaly jQuery 1.4.4, jQuery Validation 1.7 a uživatelské rozhraní jQuery 1.8.6
Šablony projektů pro ASP.NET MVC 3 teď zahrnují nejnovější verze jQuery, ověřování jQuery a uživatelského rozhraní jQuery. Uživatelské rozhraní jQuery je novým doplňkem šablon projektů a poskytuje užitečné widgety uživatelského rozhraní. Další informace o uživatelském rozhraní jQuery naleznete na jejich domovské stránce: http://jqueryui.com/.
Přidání třídy AdditionalMetadataAttribute
Pomocí Třídy AdditionalMetadataAttribute můžete naplnit slovník ModelMetadata.AdditionalValues pro vlastnost modelu.
Předpokládejme například, že model zobrazení má vlastnosti, které by se měly zobrazit pouze správci. Tento model lze anotovat pomocí nového atributu pomocí AdminOnly jako klíče a true jako hodnoty, jako 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 jako vývojář aplikace interpretovat informace o metadatech.
Vylepšené generování uživatelského rozhraní zobrazení
Šablony T4 používané pro generování zobrazení nyní generují volání pomocných metod šablon, jako je EditorFor místo pomocných rutin, jako je TextBoxFor. Tato změna zlepšuje podporu metadat v modelu ve formě atributů datových poznámek, když dialogové okno Přidat zobrazení vygeneruje zobrazení.
Generování uživatelského rozhraní Pro přidání zobrazení zahrnuje také vylepšené zjišťování a použití informací o primárním klíči modelu na základě konvence. Například dialogové okno Přidat zobrazení používá tyto informace k zajištění toho, aby hodnota primárního klíče nebyla vygenerována jako upravitelné pole formuláře.
Výchozí šablony pro úpravy a vytváření obsahují odkazy na skripty jQuery potřebné k ověření klienta.
Přidání Html.Raw – metoda
Ve výchozím nastavení modul zobrazení Razor html kóduje všechny hodnoty. Například následující fragment kódu kóduje kód HTML uvnitř proměnné pozdravu tak, aby se zobrazil na stránce jako <strong>Hello World!</strong>
.
@{
string greeting = "<strong>Hello World!</strong>";
}
<p>@greeting</p>
Nová metoda Html.Raw poskytuje jednoduchý způsob zobrazení nekódovaného HTML, když je známo, že obsah je bezpečný. Následující příklad zobrazí stejný řetězec, ale řetězec se vykreslí jako revize:
@{
string greeting = "<strong>Hello World!</strong>";
}
<p>@Html.Raw(greeting)</p>
Přejmenování vlastnosti Controller.ViewModel a vlastnosti ViewBag na ViewBag
Dříve Vlastnost ViewModel Kontroleru odpovídala vlastnosti View zobrazení zobrazení. Obě tyto vlastnosti poskytují způsob, jak získat přístup k hodnotám objektu ViewDataDictionary pomocí dynamické syntaxe objektu property-accessor. Obě vlastnosti byly přejmenovány tak, aby byly stejné, aby se zabránilo nejasnostem a byly konzistentnější.
Přejmenování třídy ControllerSessionStateAttribute na SessionStateAttribute
Třída ControllerSessionStateAttribute byla zavedena ve verzi RC ASP.NET MVC 3. Vlastnost byla přejmenována na stručnější.
Přejmenování vlastnosti RemoteAttribute "Fields" na "AdditionalFields"
Vlastnost Fields třídy RemoteAttribute způsobila určité nejasnosti mezi uživateli. Přejmenování této vlastnosti na AdditionalFields vysvětluje jeho záměr.
Přejmenováno SkipRequestValidationAttribute na AllowHtmlAttribute
Atribut SkipRequestValidationAttribute byl přejmenován na AllowHtmlAttribute , aby lépe představoval zamýšlené použití.
Změna metody Html.ValidationMessage pro zobrazení první užitečné chybové zprávy
Byla opravena metoda Html.ValidationMessage , která zobrazovala první užitečnou chybovou zprávu místo pouhého zobrazení první chyby.
Během vazby modelu lze slovník ModelState naplnit z více zdrojů s chybovými zprávami o vlastnosti, včetně samotného modelu (pokud implementuje IValidatableObject), z ověřovacích atributů použitých na vlastnost a z výjimek vyvolaných při přístupu k vlastnosti.
Když Html.ValidationMessage metoda zobrazí ověřovací zprávu, přeskočí položky stavu modelu, které obsahují výjimku, protože jsou obecně určeny pro koncového uživatele. Místo toho metoda hledá první ověřovací zprávu, která není přidružena k výjimce a zobrazí tuto zprávu. Pokud se žádná taková zpráva nenajde, ve výchozím nastavení se zobrazí obecná chybová zpráva přidružená k první výjimce.
Oprava @model deklarace pro nepřidání prázdných znaků do dokumentu
V dřívějších verzích @model
byla deklarace v horní části zobrazení přidána do vykresleného výstupu HTML prázdný řádek. Tato oprava byla opravena tak, aby deklarace nezaváděla prázdné znaky.
Přidání vlastnosti FileExtensions pro zobrazení modulů pro podporu názvů souborů specifických pro moduly
Modul zobrazení může vrátit zobrazení pomocí explicitní cesty zobrazení jako v následujícím příkladu:
return View("~/views/home/index.cshtml");
První modul zobrazení se vždy pokusí zobrazení vykreslit. Ve výchozím nastavení je modul zobrazení Webové formuláře prvním modulem zobrazení; vzhledem k tomu, že modul Webových formulářů nemůže vykreslit zobrazení Razor, dojde k chybě. Moduly zobrazení teď mají vlastnost FileExtensions , která slouží k určení přípon souborů, které podporují. Tato vlastnost je zaškrtnutá, když ASP.NET určuje, zda modul zobrazení může vykreslit soubor. Jedná se o zásadní změnu a další podrobnosti najdete v části Zásadní změny v tomto dokumentu.
Oprava pomocné rutiny LabelFor pro generování správné hodnoty atributu For
Byla opravena chyba, kdy Metoda LabelFor vykreslovala atribut pro atribut, který odpovídá atributu názvu vstupního prvku místo jeho ID. Podle W3C by atribut for měl odpovídat ID vstupního prvku.
Oprava metody RenderAction, která dává explicitním hodnotám prioritu během vazby modelu
V dřívějších verzích byly explicitní hodnoty předané metodě RenderAction ignorovány ve prospěch aktuálních hodnot formuláře během vazby modelu uvnitř podřízené akce. Oprava zajišťuje, že explicitní hodnoty budou mít přednost během vazby modelu.
Zásadní změny v ASP.NET MVC 3 RC2
- V předchozích verzích ASP.NET MVC se filtry akcí vytvořily pro každý požadavek s výjimkou několika případů. Toto chování nikdy nebylo zaručené chování, ale pouze podrobnosti implementace a kontrakt pro filtry byl považovat za bezstavové. V ASP.NET MVC 3 se filtry ukládají do mezipaměti agresivněji. Proto může dojít k narušení všech filtrů vlastních akcí, které nesprávně ukládají stav instance.
- Pořadí provádění filtrů výjimek se změnilo pro filtry výjimek, které mají stejnou hodnotu Objednávky . V ASP.NET MVC 2 a starší filtry výjimek na kontroleru, který měl stejnou hodnotu Order jako u metody akce, byly provedeny před filtry výjimek v metodě akce. Obvykle se jedná o případ, kdy byly použity filtry výjimek bez zadané hodnoty Objednávky . V ASP.NET MVC 3 bylo toto pořadí obráceno, aby se nejprve spustila nejvýraznější obslužná rutina výjimek. Stejně jako v předchozích verzích platí, že pokud je vlastnost Order explicitně zadána, filtry se spouští v zadaném pořadí.
- Do základní třídy VirtualPathProviderViewEngine byla přidána nová vlastnost s názvem FileExtensions. Když ASP.NET vyhledá zobrazení podle cesty (ne podle názvu), budou se považovat pouze zobrazení s příponou souboru obsaženou v seznamu určeném touto novou vlastností. Jedná se o zásadní změnu v aplikacích, ve kterých je zaregistrovaný vlastní zprostředkovatel sestavení, aby bylo možné povolit vlastní příponu souboru pro zobrazení webových formulářů a kde zprostředkovatel odkazuje na tato zobrazení pomocí úplné cesty místo názvu. Alternativním řešením je změnit hodnotu vlastnosti FileExtensions tak, aby zahrnovala vlastní příponu souboru.
- Implementace vlastního kontroleru, které přímo implementují IControllerFactory rozhraní musí poskytnout implementaci nové GetControllerSessionBehavior metoda, která byla přidána do rozhraní v této verzi. Obecně se doporučuje neimplementovat toto rozhraní přímo a místo toho odvodit třídu z DefaultControllerFactory.
Známé problémy v ASP.NET MVC 3 RC2
- Instalační program ASP.NET MVC 3 dokáže nainstalovat pouze počáteční verzi správce balíčků NuGet. Po instalaci počáteční verze můžete NuGet nainstalovat a aktualizovat pomocí správce rozšíření sady Visual Studio. Pokud už máte NuGet nainstalovaný, přejděte do galerie rozšíření sady Visual Studio a aktualizujte ji na nejnovější verzi NuGetu.
- Vytvoření nového projektu ASP.NET MVC 3 ve složce řešení způsobí chybu NullReferenceException . Alternativním řešením je vytvořit projekt ASP.NET MVC 3 v kořenovém adresáři řešení a pak ho přesunout do složky řešení.
- Dokončení instalačního programu může trvat mnohem déle než předchozí verze ASP.NET MVC. Je to proto, že aktualizuje komponenty sady Visual Studio 2010.
- Funkce IntelliSense pro syntaxi Razor nefunguje při instalaci ReSharperu. Pokud máte nainstalovaný ReSharper a chcete využít výhod podpory Razor IntelliSense v ASP.NET MVC 3 RC2, podívejte se na příspěvek Razor Intellisense a ReSharper na Hadi Hariri blog, který popisuje způsoby jejich současného použití společně.
- Zobrazení CSHTML a VBHTML vytvořená s beta verzí ASP.NET MVC 3 nemají správně nastavenou akci sestavení s výsledkem, že tyto typy zobrazení jsou při publikování projektu vynechány. Hodnota Akce sestavení pro tyto soubory by měla být nastavena na Obsah". ASP.NET MVC 3 RC2 tento problém řeší u nových souborů, ale neopravuje nastavení existujících souborů pro projekt vytvořený s verzí Beta.
- Během instalace se v dialogovém okně přijetí smlouvy EULA zobrazí licenční podmínky v okně, které je menší, než je zamýšleno.
- Když upravujete zobrazení Razor (soubor .cshtml), položka nabídky Přejít na kontroler v sadě Visual Studio nebude dostupná a neobsahuje žádné fragmenty kódu.
- Pokud nainstalujete ASP.NET MVC 3 pro Visual Web Developer Express na počítač, na kterém není nainstalovaná sada Visual Studio, a pak později nainstalujte Sadu Visual Studio, musíte přeinstalovat ASP.NET MVC 3. Visual Studio a Visual Web Developer Express sdílejí komponenty, které jsou upgradovány instalačním programem ASP.NET MVC 3. Stejný problém platí, pokud nainstalujete ASP.NET MVC 3 pro Visual Studio na počítač, který nemá Visual Web Developer Express, a pak později nainstaluje Visual Web Developer Express.
- Instalace ASP.NET MVC 3 RC 2 neaktualizuje NuGet, pokud ho už máte nainstalovanou. Pokud chcete upgradovat NuGet, přejděte do správce rozšíření sady Visual Studio a měl by se zobrazit jako dostupná aktualizace. Odsud můžete nuGet upgradovat na nejnovější verzi.
ASP.NET MVC 3 Release Candidate
ASP.NET MVC Release Candidate byl vydán 9. listopadu 2010.
Nové funkce v ASP.NET MVC 3 RC
Tato část popisuje funkce, které byly představeny ve verzi ASP.NET MVC 3 RC od beta verze.
Správce balíčků NuGet
ASP.NET MVC 3 obsahuje Správce balíčků NuGet (dříve Označovaný jako NuPack), což je integrovaný nástroj pro správu balíčků pro přidávání knihoven a nástrojů do projektů sady Visual Studio. Tento nástroj automatizuje kroky, které vývojáři dnes podniknou, aby získali knihovnu do zdrojového stromu.
S NuGetem můžete pracovat jako s nástrojem příkazového řádku, jako integrované okno konzoly v sadě Visual Studio 2010, z místní nabídky sady Visual Studio a jako sada rutin PowerShellu.
Další informace o NuGetu najdete v dokumentaci NuGet.
Vylepšené dialogové okno Nový projekt
Při vytváření nového projektu teď dialogové okno Nový projekt umožňuje zadat modul zobrazení a také typ projektu ASP.NET MVC.
Podpora úprav seznamu šablon a modulů zobrazení uvedených v dialogovém okně je součástí této verze.
Výchozí šablony jsou následující:
Prázdný. Obsahuje minimální sadu souborů pro projekt ASP.NET MVC, včetně výchozí adresářové struktury pro projekty ASP.NET MVC, souboru Site.css, který obsahuje výchozí styly ASP.NET MVC, a adresář Scripts, který obsahuje výchozí soubory JavaScriptu.
Internetová aplikace. Obsahuje ukázkové funkce, které ukazují, jak používat zprostředkovatele členství s ASP.NET MVC.
Seznam šablon projektů, které se zobrazí v dialogovém okně, je zadán v registru Systému Windows.
Kontrolery bez relací
Nový ControllerSessionStateAttribute poskytuje větší kontrolu nad chováním stavu relace pro kontrolery zadáním Hodnoty výčtu System.Web.SessionState.SessionStateBehavior .
Následující příklad ukazuje, jak vypnout stav relace pro všechny požadavky na kontroler.
[ControllerSessionState(SessionStateBehavior.Disabled)]
public class CoolController : Controller {
public ActionResult Index() {
object o = Session["Key"]; // Causes an exception.
}
}
Následující příklad ukazuje, jak nastavit stav relace jen pro čtení pro všechny požadavky na kontroler.
[ControllerSessionState(SessionStateBehavior.ReadOnly)]
public class CoolController : Controller {
public ActionResult Index() {
Session["Key"] = "value"; // Value is not available in
the next request
}
}
Nové ověřovací atributy
CompareAttribute
Nový atribut ověření CompareAttribute umožňuje porovnat hodnoty dvou různých vlastností modelu. V následujícím příkladu musí Vlastnost ComparePassword odpovídat poli Password , aby byla platná.
public class User {
[Required]
public string Password { get; set; }
[Required, Compare("Password")]
public string ComparePassword { get; set; }
}
RemoteAttribute
Nový atribut ověření RemoteAttribute využívá vzdáleného validátoru modulu plug-in jQuery Validation, který umožňuje ověření na straně klienta volat metodu na serveru, která provádí skutečnou logiku ověření.
V následujícím příkladu má vlastnost UserName vlastnost RemoteAttribute. Při úpravách této vlastnosti v zobrazení pro úpravy bude ověření klienta volat akci s názvem UserNameAvailable ve třídě UsersController , aby bylo možné toto pole ověřit.
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";
}
}
Ve výchozím nastavení je název vlastnosti, na kterou je atribut použit, odeslán do metody akce jako parametr řetězce dotazu.
Nová přetížení pro metody LabelFor a LabelForModel
Byla přidána nová přetížení pro Metody LabelFor a LabelForModel , které umožňují zadat text popisku. Následující příklad ukazuje, jak tyto přetížení použít.
@Html.LabelFor(m => m.PropertyName,
"Label Text");
@Html.LabelForModel("Label Text");
Ukládání výstupu podřízené akce do mezipaměti
OutputCacheAttribute podporuje ukládání výstupu do mezipaměti podřízených akcí, které jsou volána pomocí Html.RenderAction nebo Html.Action pomocné metody. Následující příklad ukazuje zobrazení, které volá jinou akci.
Hi there. The uncached time is:
@DateTime.Now
The cached time is: @Html.Action("GetDate")
Akce GetDate je opatřena poznámkami OutputCacheAttribute:
[OutputCache(Duration = 100,
VaryByParam = "none")]
public string GetDate() {
return DateTime.Now.ToString();
}
Když se tento kód spustí, výsledek volání Html.Action("GetDate") je uložen do mezipaměti po dobu 100 sekund.
Vylepšení dialogového okna Přidat zobrazení
Když přidáte zobrazení silného typu, dialogové okno Přidat zobrazení teď filtruje více nepoužitelné typy než v předchozích verzích, například mnoho základních typů rozhraní .NET Framework. Seznam je teď také seřazený podle názvu třídy, nikoli podle plně kvalifikovaného názvu typu, což usnadňuje hledání typů. Například název typu se teď zobrazí jako v následujícím příkladu:
ClassName (obor názvů)
V dřívějších verzích by se tato možnost zobrazila takto:
Namespace.ClassName
Podrobné ověření požadavku
Vlastnost Exclude ValidateInputAttribute již neexistuje. Místo toho pro přeskočení ověření požadavku pro konkrétní vlastnosti modelu během vazby modelu použijte nový SkipRequestValidationAttribute.
Předpokládejme například, že metoda akce se používá k úpravě blogového příspěvku:
[HttpPost]
public ActionResult Edit(BlogPostViewModel post) {
// Save the post in the database
}
Následující příklad ukazuje model zobrazení pro blogový příspěvek.
public class BlogPostViewModel {
public int Id {get; set;}
public string Subject {get; set;}
public string Description {get; set;}
}
Když uživatel odešle nějaké značky pro vlastnost Description, vazba modelu se nezdaří kvůli ověření požadavku. Chcete-li zakázat ověření požadavku během vazby modelu pro příspěvek blogu Popis, použijte SkipRequpestValidationAttribute na vlastnost, jak je znázorněno v tomto příkladu:.
public class BlogPostViewModel {
public int Id {get; set;}
public string Subject {get; set;}
[SkipRequestValidation]
public string Description {get; set;}
}
Pokud chcete také vypnout ověřování požadavků pro každou vlastnost modelu, použijte ValidateInputAttribute s hodnotou false pro metodu akce:
[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(BlogPostViewModel post) {
// Save the post in the database
}
Zásadní změny v ASP.NET MVC 3 RC
- Pořadí provádění filtrů výjimek se změnilo pro filtry výjimek, které mají stejnou hodnotu Objednávky . V ASP.NET MVC 2 a starší filtry výjimek na kontroleru, který měl stejné pořadí jako u metody akce, byly provedeny před filtry výjimek v metodě akce. Obvykle se jedná o případ, kdy byly použity filtry výjimek bez zadané hodnoty Objednávky . V ASP.NET MVC 3 bylo toto pořadí obráceno, aby se nejprve spustila nejvýraznější obslužná rutina výjimek. Stejně jako v předchozích verzích platí, že pokud je vlastnost Order explicitně zadána, filtry se spouští v zadaném pořadí.
- Přidání nové vlastnosti s názvem FileExtensions do základní třídy VirtualPathProviderViewEngine . Při vyhledávání zobrazení podle cesty (a ne podle názvu) se považují pouze zobrazení s příponou souboru obsaženou v seznamu určeném touto novou vlastností. Jedná se o zásadní změnu pro ty, kteří zaregistrují vlastního zprostředkovatele sestavení, aby povolili vlastní příponu souboru pro zobrazení webových formulářů a odkazují na tato zobrazení pomocí úplné cesty místo názvu. Alternativním řešením je změnit hodnotu vlastnosti FileExtensions tak, aby zahrnovala vlastní příponu souboru.
Známé problémy v ASP.NET MVC 3 RC
- Dokončení instalačního programu může trvat mnohem déle než předchozí verze ASP.NET MVC, protože aktualizuje součásti sady Visual Studio 2010.
- Generování uživatelského rozhraní Přidat zobrazení při výběru astrongly typed view scaffolds write-only vlastnosti. Ty by se měly vždy ignorovat generováním uživatelského rozhraní. Dialogové okno Přidat zobrazení také generuje vlastnosti jen pro čtení při generování zobrazení Upravit nebo Vytvořit. Vlastnosti jen pro čtení by měly být vygenerovány pouze pro zobrazení zobrazení a seznamu.
- Ladění nefunguje při instalaci ASP.NET MVC 3 společně s asynchronním CTP. ASP.NET MVC 3 nelze nainstalovat souběžně s asynchronním CTP. Odinstalujte asynchronní CTP a opravte ladění. Další podrobnosti najdete v tomto blogovém příspěvku o odinstalaci všech částí ASP.NET MVC 3 RC.
- Funkce Razor IntelliSense nefunguje při instalaci nástroje Resharper. Pokud máte nainstalovaný ReSharper a chcete využít podporu Razor IntelliSense v ASP.NET MVC 3 RC, přečtěte si prosím tento blogový příspěvek od JetBrains, který popisuje způsoby jejich použití společně dnes.
- Zobrazení CSHTML a VBHTML vytvořená s beta verzí ASP.NET MVC 3 nemají správnou akci sestavení, která je vynechá z publikování. Akce sestavení pro tyto soubory by měla být nastavena na "Obsah". ASP.NET MVC 3 RC tento problém řeší u nových souborů, ale neupravuje nastavení existujících souborů pro projekt vytvořený pomocí beta verze.
- Dokončení instalačního programu může trvat mnohem déle než předchozí verze ASP.NET MVC, protože aktualizuje součásti sady Visual Studio 2010.
- Generování uživatelského rozhraní Pro přidání zobrazení při výběru uživatelského rozhraní zobrazení se silným typem "Upravit" vygeneruje vlastnosti jen pro čtení. Podobně jsou vlastnosti jen pro zápis vygenerovány pro zobrazení "Display".
- Během instalace se v dialogovém okně přijetí smlouvy EULA zobrazí licenční podmínky v okně, které je menší, než je zamýšleno.
- Instalace Async CTP sady Visual Studio způsobí konflikt s verzí Razor, která je součástí instalace nástrojů ASP.NET MVC 3. Ujistěte se, že se na stejný počítač nepokoušíte nainstalovat asynchronní CTP sady Visual Studio i verzi Razor.
- Když upravujete zobrazení Razor (soubor .cshtml), položka nabídky Přejít na kontroler v sadě Visual Studio nebude dostupná a neobsahuje žádné fragmenty kódu.
ASP.NET MVC 3 Beta
ASP.NET MVC 3 Beta byla vydána 6. října 2010. Následující poznámky jsou specifické pro beta verzi a podléhají všem aktualizacím nebo změnám uvedeným v části ASP.NET MVC 3 Release Candidate výše.
Nové funkce v beta verzi ASP.NET MVC 3
Tato část popisuje funkce, které byly představeny v beta verzi ASP.NET MVC 3.
Správce balíčků NuGet
ASP.NET MVC 3 obsahuje Správce balíčků NuGet, což je integrovaný nástroj pro správu balíčků pro přidávání knihoven a nástrojů do projektů sady Visual Studio. Ve většině případů automatizuje kroky, které vývojáři dnes podniknou, aby získali knihovnu do zdrojového stromu.
S NuGetem můžete pracovat jako s nástrojem příkazového řádku, jako integrované okno konzoly v sadě Visual Studio 2010, z místní nabídky sady Visual Studio a jako sadu rutin PowerShellu.
Další informace o NuGetu najdete v dokumentaci NuGet.
Vylepšené dialogové okno Nový projekt
Při vytváření nového projektu teď dialogové okno Nový projekt umožňuje zadat modul zobrazení a také typ projektu ASP.NET MVC.
Podpora pro úpravu seznamu šablon a modulů zobrazení uvedených v dialogovém okně není součástí této verze.
Výchozí šablony jsou následující:
Prázdný. Obsahuje minimální sadu souborů pro projekt ASP.NET MVC, včetně výchozí adresářové struktury pro projekty ASP.NET MVC, malého Site.css souboru, který obsahuje výchozí styly ASP.NET MVC, a adresář Scripts, který obsahuje výchozí soubory JavaScriptu.
Internetová aplikace. Obsahuje ukázkové funkce, které ukazují, jak používat zprostředkovatele členství v rámci ASP.NET MVC.
Zjednodušený způsob zadávání modelů se silnými typy v zobrazeních Razor
Způsob určení typu modelu pro zobrazení Razor silného typu byl zjednodušen pomocí nové @model direktivy pro zobrazení CSHTML a @ModelType direktivu pro zobrazení VBHTML. V dřívějších verzích ASP.NET MVC byste zadali model silného typu pro zobrazení Razor tímto způsobem:
@inherits System.Web.Mvc.WebViewPage
V této verzi můžete použít následující syntaxi:
@model MyModelNamespace.MyModelType
Podpora nových pomocných metod webových stránek ASP.NET
Nová technologie webových stránek ASP.NET obsahuje sadu pomocných metod, které jsou užitečné pro přidání běžně používaných funkcí do zobrazení a kontrolerů. ASP.NET MVC 3 podporuje použití těchto pomocných metod v rámci kontrolerů a zobrazení (kde je to vhodné). Tyto metody jsou obsaženy v sestavení System.Web.Helpers. Následující tabulka uvádí několik pomocných metod ASP.NET webových stránek.
Pomocník | Popis |
---|---|
Graf | Vykreslí graf v zobrazení. Obsahuje metody, jako jsou Chart.ToWebImage, Chart.Save a Chart.Write. |
Crypto | Používá algoritmy hash k vytvoření správně slaných a hashovaných hesel. |
WebGrid | Vykreslí kolekci objektů (obvykle data z databáze) jako mřížku. Podporuje stránkování a řazení. |
WebImage | Vykreslí obrázek. |
Webová pošta | Odešle e-mailovou zprávu. |
Stručné referenční téma, které obsahuje seznam pomocných rutin a základní syntaxe, je k dispozici jako součást dokumentace syntaxe ASP.NET Razor na následující adrese URL:
https://www.asp.net/webmatrix/tutorials/asp-net-web-pages-api-reference
Další podpora injektáže závislostí
Aktuální verze vychází z verze ASP.NET MVC 3 Preview 1 a zahrnuje přidanou podporu pro dvě nové služby a čtyři stávající služby a vylepšenou podporu řešení závislostí a lokátoru Common Service.
Nové rozhraní IControllerActivator pro vytvoření instance jemně odstupňovaného kontroleru
Nové rozhraní IControllerActivator poskytuje jemněji odstupňovanou kontrolu nad tím, jak se kontrolery vytvářejí instance prostřednictvím injektáže závislostí. Následující příklad ukazuje rozhraní:
namespace System.Web.Mvc {
using System.Web.Routing;
public interface IControllerActivator {
IController Create(RequestContext requestContext, Type controllerType);
}
}
Porovnejte to s rolí továrny kontroleru. Továrna kontroleru je implementace rozhraní IControllerFactory, která zodpovídá za vyhledání typu kontroleru a vytvoření instance tohoto typu kontroleru.
Aktivace kontroleru zodpovídá pouze za vytvoření instance typu kontroleru. Nevytvádějí vyhledávání typu kontroleru. Po vyhledání správného typu kontroleru by továrny kontroleru měly delegovat na instanci IControllerActivator pro zpracování skutečné instance kontroleru.
DefaultControllerFactory třída má nový konstruktor, který přijímá IControllerFactory instance. To umožňuje použít injektáž závislostí ke správě tohoto aspektu vytváření kontroleru, aniž byste museli přepsat výchozí chování vyhledávání typu kontroleru.
IServiceLocator – rozhraní nahrazeno IDependencyResolver
Na základě zpětné vazby komunity nahradila beta verze ASP.NET MVC 3 použití rozhraní IServiceLocator rozhraním IDependencyResolver specifické pro potřeby ASP.NET MVC. Následující příklad ukazuje nové rozhraní:
namespace System.Web.Mvc {
using System.Collections.Generic;
public interface IDependencyResolver {
object GetService(Type serviceType);
IEnumerable<object> GetServices(Type serviceType);
}
}
V rámci této změny byla serviceLocator třída také nahrazena DependencyResolver třídy. Registrace překladače závislostí se podobá dřívějším verzím ASP.NET MVC:
DependencyResolver.SetResolver(myResolver);
Implementace tohoto rozhraní by měly jednoduše delegovat na kontejner injektáže podkladových závislostí, aby poskytla zaregistrovanou službu požadovaného typu.
Pokud neexistují žádné registrované služby požadovaného typu, ASP.NET MVC očekává implementace tohoto rozhraní vrátit hodnotu null z GetService a vrátit prázdnou kolekci z GetServices.
Nová Třída DependencyResolver umožňuje registrovat třídy, které implementují buď nové rozhraní IDependencyResolver, nebo rozhraní IServiceLocator (Common Service Locator). Další informace o lokátoru Common Service najdete v tématu CommonServiceLocator na GitHubu.
Nové rozhraní IViewActivator pro vytvoření instance stránky podrobného zobrazení
Nové IViewPageActivator rozhraní poskytuje jemně odstupňovanou kontrolu nad tím, jak se stránky zobrazení vytvářejí instance prostřednictvím injektáže závislostí. To platí pro instance WebFormView i instance RazorView. Následující příklad ukazuje nové rozhraní:
namespace System.Web.Mvc {
public interface IViewPageActivator {
object Create(ControllerContext controllerContext, Type type);
}
}
Tyto třídy nyní přijímají IViewPageActivator konstruktor argument, který umožňuje použít injektáž závislostí řídit, jak ViewPage, ViewUserControl a WebViewPage typy jsou instance.
Podpora nového překladače závislostí pro existující služby
Nová verze zahrnuje podporu řešení závislostí pro následující služby:
- Zprostředkovatelé ověřování modelů Třídy, které implementují ModelValidatorProvider, lze zaregistrovat v překladač závislostí a systém je použije k podpoře ověřování na straně klienta a serveru.
- Zprostředkovatel metadat modelu Jedna třída, která implementuje ModelMetadataProvider lze zaregistrovat v překladač závislostí a systém ho použije k poskytování metadat pro šablonování a ověřovací systémy.
- Zprostředkovatelé hodnot. Třídy, které implementují ValueProviderFactory lze zaregistrovat v překladač závislostí a systém je použije k vytvoření zprostředkovatelů hodnot, které kontroler a během vazby modelu.
- Pořadače modelů Třídy, které implementují IModelBinderProvider lze zaregistrovat v překladač závislostí a systém je použije k vytvoření pořadačů modelů, které jsou spotřebovány systémem vazby modelu.
Nová podpora neobtěžujícího jazyka jQuery založeného na ajaxu
ASP.NET MVC obsahuje pomocné metody ajax, například následující:
- Ajax.ActionLink
- Ajax.RouteLink
- Ajax.BeginForm
- Ajax.BeginRouteForm
Tyto metody používají JavaScript k vyvolání metody akce na serveru místo použití úplného postbacku. Tato funkce byla aktualizována tak, aby využívala jQuery nerušivým způsobem. Tyto pomocné metody místo rušivého generování vložených klientských skriptů oddělují chování od značek generováním atributů HTML5 pomocí předpony data ajax . Chování se pak použije na značku odkazováním na příslušné soubory JavaScriptu. Ujistěte se, že jsou odkazovány na následující soubory JavaScriptu:
- jquery-1.4.1.js
- jquery.unobtrusive.ajax.js
Tato funkce je ve výchozím nastavení povolená v souboru Web.config v nových šablonách projektu ASP.NET MVC 3, ale ve výchozím nastavení je pro stávající projekty zakázaná. Další informace naleznete v tématu Přidání příznaků pro celou aplikaci pro ověření klienta a nevtíravý JavaScript dále v tomto dokumentu.
Nová podpora nepotvrzujícího ověřování jQuery
Ve výchozím nastavení ASP.NET MVC 3 Beta používá ověřování jQuery nerušivým způsobem k ověření na straně klienta. Pokud chcete povolit nerušivé ověření klienta, v zobrazení proveďte volání podobné následujícímu:
Html.EnableClientValidation();
To vyžaduje, aby ViewContext.UnobtrusiveJavaScriptEnabled vlastnost je nastavena na true, což můžete provést provedením následujícího volání:
Html.EnableUnobtrusiveJavaScript();
Ujistěte se také, že jsou odkazovány následující soubory JavaScriptu.
- jquery-1.4.1.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
Tato funkce je ve výchozím nastavení zapnutá v souboru Web.config v nové šabloně projektu ASP.NET MVC 3, ale ve výchozím nastavení je pro stávající projekty zakázaná. Další informace najdete v tématu Nové příznaky pro ověřování klientů v celé aplikaci a nevěrné JavaScript dále v tomto dokumentu.
Nové příznaky pro ověřování klientů v celé aplikaci a nerušivé JavaScript
Ověřování klienta a nerušivé JavaScript můžete povolit nebo zakázat globálně pomocí statických členů třídy HtmlHelper, jak je znázorněno v následujícím příkladu:
HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
Výchozí šablony projektů ve výchozím nastavení umožňují nevtíravý JavaScript. Tyto funkce můžete také povolit nebo zakázat v kořenovém souboru Web.config aplikace pomocí následujících nastavení:
<configuration>
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
</configuration>
Vzhledem k tomu, že tyto funkce můžete ve výchozím nastavení povolit, byly do třídy HtmlHelper zavedeny nové přetížení, které vám umožní přepsat výchozí nastavení, jak je znázorněno v následujících příkladech:
public void EnableClientValidation();
public void EnableClientValidation(bool enabled);
public void EnableUnobtrusiveJavaScript();
public void EnableUnobtrusiveJavaScript(bool enabled);
Kvůli zpětné kompatibilitě jsou obě tyto funkce ve výchozím nastavení zakázané.
Nová podpora kódu, který se spouští před spuštěním zobrazení
Teď můžete do adresáře Zobrazení vložit soubor s názvem _viewstart.cshtml (nebo _viewstart.vbhtml) a přidat do něj kód, který se bude sdílet mezi více zobrazeními v daném adresáři a jeho podadresáři. Například do stránky _viewstart.cshtml ve složce ~/Views můžete vložit následující kód:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Tím se nastaví stránka rozložení pro každé zobrazení ve složce Zobrazení a všechny její podsložky rekurzivně. Při vykreslení zobrazení se kód v souboru _viewstart.cshtml spustí před spuštěním kódu zobrazení. Kód _viewstart.cshtml se vztahuje na každé zobrazení v této složce.
Ve výchozím nastavení platí kód v souboru _viewstart.cshtml také pro zobrazení v libovolné podsložce. Jednotlivé podsložky však mohou mít vlastní verzi souboru _viewstart.cshtml; v takovém případě má přednost místní verze. Pokud chcete například spustit kód, který je společný pro všechna zobrazení pro HomeController, vložte soubor _viewstart.cshtml do složky ~/Views/Home.
Nová podpora syntaxe VBHTML Razor
Předchozí ASP.NET MVC ve verzi Preview zahrnovala podporu zobrazení využívající syntaxi Razor založené na jazyce C#. Tato zobrazení používají příponu souboru .cshtml. V rámci probíhající práce na podporu Razor, ASP.NET MVC 3 Beta zavádí podporu syntaxe Razor v jazyce Visual Basic, která používá příponu souboru .vbhtml.
Úvod do používání syntaxe jazyka Visual Basic na stránkách VBHTML najdete v tomto kurzu na následující adrese URL:
https://www.asp.net/webmatrix/tutorials/asp-net-web-pages-visual-basic
Podrobnější kontrola nad ValidateInputAttribute
ASP.NET MVC vždy obsahovala třídu ValidateInputAttribute, která vyvolá základní ASP.NET ověřovací infrastrukturu požadavku, aby se zajistilo, že příchozí požadavek neobsahuje potenciálně škodlivý vstup. Ve výchozím nastavení je povolené ověřování vstupu. Ověření požadavku je možné zakázat pomocí atributu ValidateInputAttribute, jak je znázorněno v následujícím příkladu:
[ValidateInput(false)]
public ActionResult SomeAction() {
return View();
}
Mnoho webových aplikací však má jednotlivá pole formuláře, která potřebují povolit HTML, zatímco zbývající pole by neměla. Třída ValidateInputAttribute teď umožňuje zadat seznam polí, která by neměla být zahrnuta do ověření požadavku.
Pokud například vyvíjíte modul blogu, můžete chtít povolit revize v polích Text a Souhrn. Tato pole mohou být reprezentována dvěma vstupními elementy, z nichž každý má atribut name odpovídající názvu vlastnosti ("Body" a "Summary"). Chcete-li zakázat ověření požadavku pouze pro tato pole, zadejte názvy (oddělené čárkami) ve vlastnosti Exclude Třídy ValidateInput, jak je znázorněno v následujícím příkladu:
[ValidateInput(true, Exclude="Body, Summary")]
public ActionResult About() {
return View();
}
Pomocné rutiny převádějí podtržítka na pomlčky pro názvy atributů HTML určené pomocí anonymních objektů.
Pomocné metody umožňují zadat páry název atributu/hodnota pomocí anonymního objektu, jak je znázorněno v následujícím příkladu:
Html.TextBox("Name", "Value", new {title = "Title"})
Tento přístup neumožňuje v názvu atributu používat pomlčky, protože pomlčka se nedá použít pro název vlastnosti v ASP.NET. Pro vlastní atributy HTML5 jsou však důležité pomlčky; Například HTML5 používá předponu "data-".
Současně nelze podtržítka použít pro názvy atributů ve formátu HTML, ale jsou platná v názvech vlastností. Proto pokud zadáte atributy pomocí anonymního objektu a pokud názvy atributů obsahují podtržítko, pomocné metody převedou podtržítka na pomlčky. Například následující pomocná syntaxe používá podtržítko:
Html.TextBox("Name", "Value", new {data_required = "true"})
Předchozí příklad vykresluje následující kód při spuštění pomocné rutiny:
<input data-required="true" id="Name" name="Name"
type="textbox" value="Value" />
Opravy chyb
Výchozí šablona objektu pro pomocné rutiny EditorFor a DisplayFor šablony nyní podporuje řazení zadané v DisplayAttribute.Order vlastnost. (V předchozích verzích se nepoužilo nastavení Pořadí.)
Ověření klienta teď podporuje ověřování přepsaných vlastností, které mají použité ověřovací atributy.
JsonValueProviderFactory je teď ve výchozím nastavení zaregistrovaný.
Zásadní změny
Pořadí provádění filtrů výjimek se změnilo pro filtry výjimek, které mají stejnou hodnotu Objednávky. V ASP.NET MVC 2 a starších se filtry výjimek na kontroleru se stejným pořadím jako u metody akce byly provedeny před filtry výjimek v metodě akce. Obvykle se jedná o případ, kdy byly použity filtry výjimek bez zadané hodnoty Objednávky. V ASP.NET MVC 3 bylo toto pořadí obráceno, aby se nejprve spustila nejvýraznější obslužná rutina výjimek. Stejně jako v předchozích verzích platí, že pokud je vlastnost Order explicitně zadána, filtry se spouští v zadaném pořadí.
Známé problémy
Během instalace se v dialogovém okně přijetí smlouvy EULA zobrazí licenční podmínky v okně, které je menší, než je zamýšleno.
Zobrazení Razor nepodporují Technologii IntelliSense ani zvýrazňování syntaxe. Předpokládá se, že podpora syntaxe Razor v sadě Visual Studio bude součástí pozdější verze.
Když upravujete zobrazení Razor (soubor CSHTML), položka nabídky Přejít na kontroler v sadě Visual Studio nebude k dispozici a neobsahuje žádné fragmenty kódu.
Při použití @model syntaxe k určení zobrazení CSHTML silného typu nejsou rozpoznány jazykové zkratky pro typy. Int například @model nebude fungovat, ale @model Int32 bude fungovat. Alternativním řešením této chyby je použití skutečného názvu typu při zadání typu modelu.
Při použití @model syntaxe k určení zobrazení CSHTML silného typu (nebo @ModelType k určení zobrazení VBHTML silného typu), typy s možnou hodnotou null a deklarace pole nejsou podporovány. Int? se například @model nepodporuje. Místo toho použijte @model Nullable<Int32>
. Řetězec syntaxe @model [] se také nepodporuje. Místo toho použijte @model IList<string>
.
Při upgradu projektu ASP.NET MVC 2 na ASP.NET MVC 3 nezapomeňte do části appSettings souboru Web.config přidat následující položky:
<appSettings>
<add key="enableSimpleMembership" value="false" />
</appSettings>
Existuje známý problém, který způsobuje, že ověřování pomocí formulářů vždy přesměruje neověřené uživatele na ~/Account/Login a ignoruje nastavení ověřování formulářů použité ve službě Web.config. Alternativním řešením je přidat následující nastavení aplikace.
<add key="autoFormsAuthentication" value="false" />
Právní doložka
© 2011 Microsoft Corporation. Všechna práva vyhrazena. Tento dokument je k dispozici tak, jak je. Informace a zobrazení vyjádřená v tomto dokumentu, včetně adres URL a jiných odkazů na internetové weby, se mohou bez předchozího upozornění změnit. Riziko spojené s jejich použitím nesete vy.
Tento dokument vám neposkytuje žádná zákonná práva na duševní vlastnictví, které je součástí jakéhokoli produktu společnosti Microsoft. Tento dokument můžete kopírovat a používat pro své interní referenční účely.