Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan lehet ASP.NET MVC-projektet migrálni ASP.NET Core MVC-be. A folyamat során az MVC ASP.NET kapcsolódó módosításait emeli ki.
A ASP.NET MVC-ből való migrálás többlépéses folyamat. Ez a cikk a következőket ismerteti:
- Kezdeti beállítás.
- Alapszintű vezérlők és nézetek.
- Statikus tartalom.
- Ügyféloldali függőségek.
A konfiguráció és a Identity kód áttelepítésével kapcsolatban lásd a Konfiguráció áttelepítése ASP.NET Core-ra és a Hitelesítés és Identity áttelepítése ASP.NET Core-ra című témaköröket.
Prerequisites
- Visual Studio 2019 16.4 vagy újabb a ASP.NET és webfejlesztési feladatkészlettel
- .NET Core 3.1 SDK
A kezdő ASP.NET MVC-projekt létrehozása
Hozzon létre egy példát ASP.NET MVC-projektre a Visual Studióban a migráláshoz:
- A Fájl menüben válassza a Új>Projektlehetőséget.
- Válassza ASP.NET webalkalmazás (.NET-keretrendszer), majd a Tovább gombot.
- Nevezze el a Projekt WebApp1 nevet, hogy a névtér egyezzen a következő lépésben létrehozott ASP.NET Core-projektel. Válassza a Create gombot.
- Válassza az MVC-t, majd a Létrehozás opciót.
A ASP.NET Core-projekt létrehozása
Hozzon létre egy új megoldást egy új ASP.NET Core-projekttel a migráláshoz:
- Indítsa el a Visual Studio második példányát.
- A Fájl menüben válassza a Új>Projektlehetőséget.
- Válassza ASP.NET Core webalkalmazást , majd válassza a Tovább gombot.
- Az új projekt konfigurálása párbeszédpanelen adja meg a Projekt WebApp1 nevet.
- Állítson be egy másik mappát az előző projekthez képest, hogy ugyanazt a projektnevet használhassa. Ha ugyanazt a névteret használja, könnyebben másolhat kódot a két projekt között. Válassza a Create gombot.
- A Új ASP.NET Core-webalkalmazás létrehozása párbeszédpanelen ellenőrizze, hogy .NET Core és ASP.NET Core 3.1 van-e kiválasztva. Válassza ki a webalkalmazás (model-View-Controller) projektsablont, és válassza a Létrehozás lehetőséget.
A ASP.NET Core-hely konfigurálása MVC használatára
Az ASP.NET Core 3.0-s vagy újabb verzióiban a .NET-keretrendszer már nem támogatott cél keretrendszer. A projektnek meg kell céloznia a .NET Core-t. A ASP.NET Core megosztott keretrendszere, amely az MVC-t is tartalmazza, a .NET Core futtatókörnyezet telepítésének része. A megosztott keretrendszerre a rendszer automatikusan hivatkozik, amikor az Microsoft.NET.Sdk.Web SDK-t használja a projektfájlban:
<Project Sdk="Microsoft.NET.Sdk.Web">
További információ: Keretrendszer-referencia.
A ASP.NET Core-ban az Startup osztály:
- Lecseréli a elemet
Global.asax. - Az összes alkalmazásindítási feladatot kezeli.
További információért lásd: Alkalmazás indítása ASP.NET Core.
A ASP.NET Core-projektben nyissa meg a Startup.cs fájlt:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core-alkalmazásoknak csatlakozniuk kell a köztes szoftver keretrendszerfunkcióihoz. Az előző sablon által létrehozott kód a következő szolgáltatásokat és köztes szoftvereket adja hozzá:
- A AddControllersWithViews bővítménymetódus regisztrálja az MVC szolgáltatás támogatását a vezérlők, az API-val kapcsolatos funkciók és nézetek esetében. További információ az MVC szolgáltatásregisztrációs lehetőségeiről: MVC szolgáltatásregisztráció
- A UseStaticFiles bővítménymetódus hozzáadja a statikus fájlkezelőt
Microsoft.AspNetCore.StaticFiles. AUseStaticFilesbővítménymetódust előbbUseRoutingkell meghívni. További információért lásd: Statikus fájlok az ASP.NET Core-ban. - A UseRouting bővítménymetódus útválasztást ad hozzá. További információkért lásd: Útvonalkezelés az ASP.NET Core-ban.
Ez a meglévő konfiguráció tartalmazza az MVC-projekt ASP.NET példa áttelepítéséhez szükséges elemet. Az ASP.NET Core köztes szoftver beállításairól további információt a ASP.NET Core alkalmazás indítása című témakörben talál.
Vezérlők és nézetek migrálása
Az ASP.NET Core projektben egy új üres vezérlő-osztály és nézet-osztály kerül hozzáadásra, ugyanazokat a neveket használva, mint a vezérlő- és nézetosztályok bármely ASP.NET MVC projektben, ahonnan migrál.
Az ASP.NET Core WebApp1 projekt már tartalmaz egy minimális példavezérlőt és nézetet ugyanazzal a névvel, mint az ASP.NET MVC-projektet. Ezek tehát az ASP.NET MVC-vezérlő és az ASP.NET MVC WebApp1 projektből migrálandó nézetek helyőrzőiként fognak szolgálni.
- Másolja a metódusokat az ASP.NET MVC-ből
HomeControlleraz új ASP.NET CoreHomeControllermetódusok helyére. Nincs szükség a műveleti módszerek visszatérési típusának módosítására. Az ASP.NET MVC beépített sablonjának vezérlőműveleti metódusának visszatérési típusa ActionResult; az ASP.NET Core MVC esetében a műveleti metódusokIActionResult-t adnak vissza.ActionResultimplementáljaIActionResult. - A ASP.NET Core-projektben kattintson a jobb gombbal a Nézetek/Homekönyvtár elemre, és válassza aMeglévő elem> lehetőséget.
- A Meglévő elem hozzáadása párbeszédpanelen lépjen az ASP.NET MVC WebApp1-projektNézetek/Home könyvtárába.
- Jelölje ki a
About.cshtml,Contact.cshtmlésIndex.cshtmlRazor tekintse meg a fájlokat, majd válassza a Hozzáadás lehetőséget, és cserélje le a meglévő fájlokat.
További információ: Kérelmek kezelése vezérlőkkel ASP.NET Core MVC-ben és nézetek a ASP.NET Core MVC-ben.
Az egyes metódusok tesztelése
Minden vezérlővégpont tesztelhető, azonban az elrendezés és a stílusok a dokumentum későbbi részében is szerepelnek.
- Futtassa a ASP.NET Core alkalmazást.
- Hívja meg a megjelenített nézeteket a böngészőből a futó ASP.NET Core-alkalmazásban, ha az aktuális portszámot a ASP.NET Core-projektben használt portszámra cseréli. Például:
https://localhost:44375/home/about.
Statikus tartalom migrálása
A ASP.NET MVC 5-ös vagy korábbi verziójában a statikus tartalom a webprojekt gyökérkönyvtárából lett üzemeltetve, és kiszolgálóoldali fájlokkal volt összekapcsolva. A ASP.NET Core-ban a statikus fájlok a projekt webes gyökérkönyvtárában vannak tárolva. Az alapértelmezett könyvtár {content root}/wwwroot, de módosítható. További információért lásd: Statikus fájlok az ASP.NET Core-ban.
Másolja a statikus tartalmat az ASP.NET MVC WebApp1 projektből a wwwroot ASP.NET Core WebApp1 projekt könyvtárába:
- A ASP.NET Core-projektben kattintson a jobb gombbal a könyvtárra, és válassza a
wwwrootMeglévő elem> lehetőséget. - A Meglévő elem hozzáadása párbeszédpanelen lépjen az ASP.NET MVC WebApp1 projekthez.
- Jelölje ki a
favicon.icofájlt, majd válassza a Hozzáadás lehetőséget, és cserélje le a meglévő fájlt.
Az elrendezésfájlok migrálása
Másolja a ASP.NET MVC-projektelrendezési fájlokat a ASP.NET Core-projektbe:
- A ASP.NET Core-projektben kattintson a jobb gombbal a könyvtárra, és válassza a
ViewsMeglévő elem> lehetőséget. - A Meglévő elem hozzáadása párbeszédpanelen keresse meg az ASP.NET MVC WebApp1 projekt könyvtárát
Views. - Jelölje ki a fájlt, majd válassza a
_ViewStart.cshtmlHozzáadás lehetőséget.
Másolja a ASP.NET MVC-projekt megosztott elrendezési fájljait a ASP.NET Core-projektbe:
- A ASP.NET Core-projektben kattintson a jobb gombbal a könyvtárra, és válassza a
Views/SharedMeglévő elem> lehetőséget. - A Meglévő elem hozzáadása párbeszédpanelen keresse meg az ASP.NET MVC WebApp1 projekt könyvtárát
Views/Shared. - Jelölje ki a
_Layout.cshtmlfájlt, majd válassza a Hozzáadás lehetőséget, és cserélje le a meglévő fájlt.
A ASP.NET Core-projektben nyissa meg a _Layout.cshtml fájlt. Végezze el a következő módosításokat az alább látható befejezett kódnak megfelelően:
Frissítse a Bootstrap CSS beillesztését, hogy megfeleljen az alábbi befejezett kódnak.
- Cserélje le
@Styles.Render("~/Content/css")a<link>betöltendőbootstrap.csselemre (lásd alább). - Távolítsa el
@Scripts.Render("~/bundles/modernizr").
A Bootstrap CSS beépítésének kész helyettesítő jelölése.
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
Frissítse a jQuery és a Bootstrap JavaScript beillesztését, hogy megfeleljen az alábbi befejezett kódnak:
- Cserélje le a
@Scripts.Render("~/bundles/jquery")elemet egy<script>elemre (lásd alább). - Cserélje le a
@Scripts.Render("~/bundles/bootstrap")elemet egy<script>elemre (lásd alább).
A jQuery és a Bootstrap JavaScript helyettesítő jelölésének befejezése:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
A frissített _Layout.cshtml fájl alább látható:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@RenderSection("scripts", required: false)
</body>
</html>
A webhely megtekintése a böngészőben. A megjelenítésnek a várt stílusokkal kell történnie.
A kötegelés és a kicsinyítés beállítása
ASP.NET Core kompatibilis számos nyílt forráskódú csomagküldő és minification megoldással, például a WebOptimizerrel és más hasonló kódtárakkal. ASP.NET Core nem biztosít natív kötegelési és kicsinyítési megoldást. A csomagolás és a kicsinyítés konfigurálásáról további információk a Csomagolás és kicsinyítés oldalon találhatók.
HTTP 500-hibák megoldása
Számos probléma okozhat OLYAN HTTP 500-hibaüzenetet, amely nem tartalmaz információt a probléma forrásáról. Ha például a Views/_ViewImports.cshtml fájl olyan névteret tartalmaz, amely nem létezik a projektben, HTTP 500-hiba jön létre. Alapértelmezés szerint a ASP.NET Core-alkalmazásokban a UseDeveloperExceptionPage bővítmény hozzáadódik a IApplicationBuilder bővítményhez, és akkor lesz végrehajtva, amikor a környezet fejlesztés. Ennek részletes leírása a következő kódban található:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core HTTP 500 hibaválaszokká alakítja a kezeletlen kivételeket. Ezek a válaszok általában nem tartalmazzák a hiba részleteit, hogy megakadályozzák a kiszolgálóval kapcsolatos bizalmas információk közzétételét. További információ: Fejlesztői kivételoldal.
Következő lépések
- <identity.md>
További erőforrások
Ez a cikk bemutatja, hogyan lehet ASP.NET MVC-projektet migrálni ASP.NET Core MVC 2.2-be. A folyamat során számos olyan dolgot emel ki, amelyek ASP.NET MVC-ről megváltoztak. A ASP.NET MVC-ből való migrálás többlépéses folyamat. Ez a cikk a következőket ismerteti:
- Kezdeti beállítás
- Alapszintű vezérlők és nézetek
- Statikus tartalom
- Ügyféloldali függőségek.
A konfiguráció és Identity a kód migrálásával kapcsolatban lásd: <configuration.md> és <identity.md>.
Note
Előfordulhat, hogy a minták verziószámai nem aktuálisak, ezért frissítse a projekteket ennek megfelelően.
A kezdő ASP.NET MVC-projekt létrehozása
A frissítés bemutatásához először egy ASP.NET MVC-alkalmazást hozunk létre. Hozza létre a WebApp1 névvel, hogy a névtér megegyezik a következő lépésben létrehozott ASP.NET Core-projekttel.
Szabadon választható: Módosítsa a megoldás nevét WebApp1-rőlMvc5-re. A Visual Studio megjeleníti az új megoldásnevet (Mvc5), amely megkönnyíti ennek a projektnek a következő projekttől való megkülönböztetését.
A ASP.NET Core-projekt létrehozása
Hozzon létre egy új üres ASP.NET Core-webalkalmazást, amelynek neve megegyezik az előző projekt (WebApp1) nevével, így a két projekt névterei megegyeznek. Ugyanaz a névtér megkönnyíti a kód másolását a két projekt között. Hozza létre ezt a projektet egy másik könyvtárban, mint az előző projekt, hogy ugyanazt a nevet használja.
- Szabadon választható: Hozzon létre egy új ASP.NET Core-alkalmazást a webalkalmazás-projektsablon használatával. Nevezze el a projekt WebApp1-et, és válassza ki az egyéni felhasználói fiókok hitelesítési lehetőségét. Nevezze át ezt az alkalmazást FullAspNetCore névre. A projekt létrehozása időt takarít meg az átalakítás során. A végeredmény megtekinthető a sablon által létrehozott kódban, a kód átmásolható a konvertálási projektbe, vagy összehasonlítható a sablon által létrehozott projekttel.
A webhely konfigurálása az MVC használatára
- A .NET Core célzása esetén a rendszer alapértelmezés szerint hivatkozik a Microsoft.AspNetCore.App metacsomagra . Ez a csomag az MVC-alkalmazások által gyakran használt csomagokat tartalmazza. Ha a .NET-keretrendszert célozza, a csomaghivatkozásokat egyenként kell felsorolni a projektfájlban.
Microsoft.AspNetCore.Mvc A ASP.NET Core MVC-keretrendszer.
Microsoft.AspNetCore.StaticFiles a statikus fájlkezelő. ASP.NET Core-alkalmazások kifejezetten a köztes szoftvereket, például a statikus fájlok kiszolgálását választják. További információ: Statikus fájlok.
- Nyissa meg a
Startup.csfájlt, és módosítsa a kódot az alábbiaknak megfelelően:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
A UseStaticFiles bővítménymetódus hozzáadja a statikus fájlkezelőt. További információ: Alkalmazás indítása és útválasztása.
Vezérlő és nézet hozzáadása
Ebben a szakaszban egy minimális vezérlő és nézet lesz hozzáadva, amely helyőrzőként szolgál a ASP.NET MVC-vezérlőhöz és a következő szakaszban migrált nézetekhez.
Adjon hozzá egy
Controllerskönyvtárat.Adjon hozzá egy vezérlőosztályt
HomeController.csaControllerscímtárhoz.
Adjon hozzá egy
Viewskönyvtárat.Adjon hozzá egy
Views/Homekönyvtárat.Adjon hozzá egy Razor névvel ellátott
Index.cshtmlnézetet aViews/Homekönyvtárhoz.
A projektszerkezet az alábbiakban látható:
Cserélje le a Views/Home/Index.cshtml fájl tartalmát a következő jelölőnyelvre:
<h1>Hello world!</h1>
Nyisd meg az alkalmazást.
További információ: Vezérlők és nézetek.
Az alábbi funkciókhoz az MVC-projekt ASP.NET példaprojektből a ASP.NET Core-projektbe való migrálás szükséges:
ügyféloldali tartalom (CSS, betűtípusok és szkriptek)
controllers
views
models
bundling
filters
Bejelentkezés/kijelentkezés Identity (Ez a következő oktatóanyagban történik.)
Vezérlők és nézetek
Másolja az egyes metódusokat az ASP.NET MVC-ből
HomeControlleraz újbaHomeController. A ASP.NET MVC-ben a beépített sablon vezérlőműveleti metódusának visszatérési típusa ActionResult; ASP.NET Core MVC esetében a műveleti metódusok adnak visszaIActionResult.ActionResultimplementáljaIActionResult, így nincs szükség a műveleti módszerek visszatérési típusának módosítására.Másolja a
About.cshtml,Contact.cshtmlésIndex.cshtmlRazor nézeti fájlokat az ASP.NET MVC-projektből az ASP.NET Core-projektbe.
Az egyes metódusok tesztelése
Az elrendezésfájl és a stílusok migrálása még nem történt meg, így a renderelt nézetek csak a nézetfájlok tartalmát tartalmazzák. Az elrendezésfájl által a About és Contact nézetekhez létrehozott hivatkozások még nem érhetők el.
Meghívja a böngésző renderelt nézeteit a futó ASP.NET alapalkalmazásban, és cserélje le az aktuális portszámot az ASP.NET core projektben használt portszámra. Például: https://localhost:44375/home/about.
Figyelje meg a stílus és a menüelemek hiányát. A stílus a következő szakaszban lesz javítva.
Statikus tartalom
A ASP.NET MVC 5-ös vagy korábbi verziójában a statikus tartalom a webes projekt gyökeréből lett üzemeltetve, és kiszolgálóoldali fájlokkal volt összekapcsolva. A ASP.NET Core-ban a statikus tartalom a wwwroot címtárban található. Másolja a statikus tartalmat az ASP.NET MVC alkalmazásból a wwwroot ASP.NET Core projekt könyvtárába. Ebben a mintakonvertálásban:
- Másolja a fájlt a
favicon.icoASP.NET MVC-projektből awwwrootASP.NET Core projekt könyvtárába.
A ASP.NET MVC-projekt a Bootstrap stílusát használja, és a Bootstrap-fájlokat a Content könyvtárakban tárolja Scripts . A ASP.NET MVC-projektet létrehozó sablon a Bootstrapre hivatkozik az elrendezésfájlban (Views/Shared/_Layout.cshtml). A bootstrap.js és bootstrap.css fájlok az ASP.NET MVC-projektből átmásolhatók az új projekt wwwroot könyvtárába. Ez a dokumentum ehelyett a következő szakaszban a CDN-eket használó Bootstrap (és más ügyféloldali kódtárak) támogatását adja hozzá.
Az elrendezésfájl migrálása
Másolja a fájlt az
_ViewStart.cshtmlASP.NET MVC-projekt könyvtárábólViewsa ASP.NET Core-projekt könyvtárábaViews. A_ViewStart.cshtmlfájl nem változott ASP.NET Core MVC-ben.Hozzon létre egy könyvtárat
Views/Shared.Szabadon választható: Másolja
_ViewImports.cshtmla FullAspNetCore MVC-projekt könyvtárábólViewsa ASP.NET Core-projekt könyvtárábaViews. Távolítsa el a fájlban lévő névtér-deklarációt_ViewImports.cshtml. A_ViewImports.cshtmlfájl névtereket biztosít az összes nézetfájlhoz, és bemutatja a címkesegítőket. A címkesegítők az új elrendezésfájlban használatosak. Az ASP.NET Core-hoz a_ViewImports.cshtmlfájl új.Másolja a fájlt az
_Layout.cshtmlASP.NET MVC-projekt könyvtárábólViews/Shareda ASP.NET Core-projekt könyvtárábaViews/Shared.
Nyissa meg _Layout.cshtml a fájlt, és végezze el a következő módosításokat (a befejezett kód alább látható):
Cserélje le
@Styles.Render("~/Content/css")a<link>betöltendőbootstrap.csselemre (lásd alább).Távolítsa el
@Scripts.Render("~/bundles/modernizr").Fűzzön megjegyzést a
@Html.Partial("_LoginPartial")vonalhoz (a sort körülölelje a következővel@*...*@: ). További információért lásd: Az autentikáció áttelepítése és Identity ASP.NET CoreCserélje le a
@Scripts.Render("~/bundles/jquery")elemet egy<script>elemre (lásd alább).Cserélje le a
@Scripts.Render("~/bundles/bootstrap")elemet egy<script>elemre (lásd alább).
A Bootstrap CSS-integráció cserejelölése:
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
A jQuery és a Bootstrap JavaScript beillesztésének helyettesítő jelölése:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
A frissített _Layout.cshtml fájl alább látható:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@*@Html.Partial("_LoginPartial")*@
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"></script>
@RenderSection("scripts", required: false)
</body>
</html>
A webhely megtekintése a böngészőben. Most már megfelelően kell betöltenie, a várt stílusokkal.
- Szabadon választható: Próbálja meg használni az új elrendezésfájlt. Másolja ki az elrendezésfájlt a FullAspNetCore projektből. Az új elrendezésfájl címkesegítőket használ, és más fejlesztésekkel is rendelkezik.
A kötegelés és a kicsinyítés beállítása
A csomagkonfigurálás és a minification konfigurálásáról további információt a Bundling és a Minification című témakörben talál.
HTTP 500-hibák megoldása
Számos probléma okozhat OLYAN HTTP 500-hibaüzeneteket, amelyek nem tartalmaznak információt a probléma forrásáról. Ha például a Views/_ViewImports.cshtml fájl olyan névteret tartalmaz, amely nem létezik a projektben, HTTP 500-hiba jön létre. Alapértelmezés szerint a ASP.NET Core-alkalmazásokban a UseDeveloperExceptionPage bővítmény hozzáadódik a IApplicationBuilder bővítményhez, és akkor lesz végrehajtva, amikor a konfiguráció fejlesztés. Lásd egy példát a következő kódban:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core HTTP 500 hibaválaszokká alakítja a kezeletlen kivételeket. Ezek a válaszok általában nem tartalmazzák a hiba részleteit, hogy megakadályozzák a kiszolgálóval kapcsolatos bizalmas információk közzétételét. További információ: Fejlesztői kivételoldal.
További erőforrások
Ez a cikk bemutatja, hogyan lehet ASP.NET MVC-projektet migrálni ASP.NET Core MVC 2.1-re. A folyamat során számos olyan dolgot emel ki, amelyek ASP.NET MVC-ről megváltoztak. A ASP.NET MVC-ből való migrálás többlépéses folyamat. Ez a cikk a következőket ismerteti:
- Kezdeti beállítás
- Alapszintű vezérlők és nézetek
- Statikus tartalom
- Ügyféloldali függőségek.
A konfiguráció és a Identity kód áttelepítésével kapcsolatban lásd a Konfiguráció áttelepítése ASP.NET Core-ra és a Hitelesítés és Identity áttelepítése ASP.NET Core-ra című témaköröket.
Note
Előfordulhat, hogy a minták verziószámai nem aktuálisak, ezért frissítse a projekteket ennek megfelelően.
A kezdő ASP.NET MVC-projekt létrehozása
A frissítés bemutatásához először egy ASP.NET MVC-alkalmazást hozunk létre. Hozza létre a WebApp1 névvel, hogy a névtér megegyezik a következő lépésben létrehozott ASP.NET Core-projekttel.
Szabadon választható: Módosítsa a megoldás nevét WebApp1-rőlMvc5-re. A Visual Studio megjeleníti az új megoldásnevet (Mvc5), amely megkönnyíti a megkülönböztetést a projektek között.
A ASP.NET Core-projekt létrehozása
Hozzon létre egy új üres ASP.NET Core-webalkalmazást, amelynek neve megegyezik az előző projekt (WebApp1) nevével, így a két projekt névterei megegyeznek. Ugyanaz a névtér megkönnyíti a kód másolását a két projekt között. Hozza létre ezt a projektet egy másik könyvtárban, mint az előző projekt, hogy ugyanazt a nevet használja.
- Szabadon választható: Hozzon létre egy új ASP.NET Core-alkalmazást a webalkalmazás-projektsablon használatával. Nevezze el a projekt WebApp1-et, és válassza ki az egyéni felhasználói fiókok hitelesítési lehetőségét. Nevezze át ezt az alkalmazást FullAspNetCore névre. A projekt létrehozása időt takarít meg az átalakítás során. A végeredmény megtekinthető a sablon által létrehozott kódban, a kód átmásolható a konvertálási projektbe, vagy összehasonlítható a sablon által létrehozott projekttel.
A webhely konfigurálása az MVC használatára
- A .NET Core célzása esetén a rendszer alapértelmezés szerint hivatkozik a Microsoft.AspNetCore.App metacsomagra . Ez a csomag az MVC-alkalmazások által gyakran használt csomagokat tartalmazza. Ha a .NET-keretrendszert célozza, a csomaghivatkozásokat egyenként kell felsorolni a projektfájlban.
Microsoft.AspNetCore.Mvc A ASP.NET Core MVC-keretrendszer.
Microsoft.AspNetCore.StaticFiles a statikus fájlkezelő. ASP.NET Core-alkalmazások kifejezetten a köztes szoftvereket, például a statikus fájlok kiszolgálását választják. További információ: Statikus fájlok.
- Nyissa meg a
Startup.csfájlt, és módosítsa a kódot az alábbiaknak megfelelően:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
A UseStaticFiles bővítménymetódus hozzáadja a statikus fájlkezelőt. A UseMvc bővítménymetódus útválasztást ad hozzá. További információ: Alkalmazás indítása és útválasztása.
Vezérlő és nézet hozzáadása
Ebben a szakaszban egy minimális vezérlő és nézet lesz hozzáadva, amely helyőrzőként szolgál a ASP.NET MVC-vezérlőhöz és a következő szakaszban migrált nézetekhez.
Adjon hozzá egy
Controllerskönyvtárat.Adjon hozzá egy vezérlőosztályt
HomeController.csaControllerscímtárhoz.
Adjon hozzá egy
Viewskönyvtárat.Adjon hozzá egy
Views/Homekönyvtárat.Adjon hozzá egy Razor névvel ellátott
Index.cshtmlnézetet aViews/Homekönyvtárhoz.
A projektszerkezet az alábbiakban látható:
Cserélje le a Views/Home/Index.cshtml fájl tartalmát a következő jelölőnyelvre:
<h1>Hello world!</h1>
Nyisd meg az alkalmazást.
További információ: Vezérlők és nézetek.
Az alábbi funkciókhoz az MVC-projekt ASP.NET példaprojektből a ASP.NET Core-projektbe való migrálás szükséges:
ügyféloldali tartalom (CSS, betűtípusok és szkriptek)
controllers
views
models
bundling
filters
Bejelentkezés/kijelentkezés Identity (Ez a következő oktatóanyagban történik.)
Vezérlők és nézetek
Másolja az egyes metódusokat az ASP.NET MVC-ből
HomeControlleraz újbaHomeController. A ASP.NET MVC-ben a beépített sablon vezérlőműveleti metódusának visszatérési típusa ActionResult; ASP.NET Core MVC esetében a műveleti metódusok adnak visszaIActionResult.ActionResultimplementáljaIActionResult, így nincs szükség a műveleti módszerek visszatérési típusának módosítására.Másolja a
About.cshtml,Contact.cshtmlésIndex.cshtmlRazor nézeti fájlokat az ASP.NET MVC-projektből az ASP.NET Core-projektbe.
Az egyes metódusok tesztelése
Az elrendezésfájl és a stílusok migrálása még nem történt meg, így a renderelt nézetek csak a nézetfájlok tartalmát tartalmazzák. Az elrendezésfájl által a About és Contact nézetekhez létrehozott hivatkozások még nem érhetők el.
- Meghívja a böngésző renderelt nézeteit a futó ASP.NET alapalkalmazásban, és cserélje le az aktuális portszámot az ASP.NET core projektben használt portszámra. Például:
https://localhost:44375/home/about.
Figyelje meg a stílus és a menüelemek hiányát. A stílus a következő szakaszban lesz javítva.
Statikus tartalom
A ASP.NET MVC 5-ös vagy korábbi verziójában a statikus tartalom a webes projekt gyökeréből lett üzemeltetve, és kiszolgálóoldali fájlokkal volt összekapcsolva. A ASP.NET Core-ban a statikus tartalom a wwwroot címtárban található. Másolja a statikus tartalmat az ASP.NET MVC alkalmazásból a wwwroot ASP.NET Core projekt könyvtárába. Ebben a mintakonvertálásban:
- Másolja a fájlt a
favicon.icoASP.NET MVC-projektből awwwrootASP.NET Core projekt könyvtárába.
A ASP.NET MVC-projekt a Bootstrap stílusát használja, és a Bootstrap-fájlokat a Content könyvtárakban tárolja Scripts . A ASP.NET MVC-projektet létrehozó sablon a Bootstrapre hivatkozik az elrendezésfájlban (Views/Shared/_Layout.cshtml). A bootstrap.js és bootstrap.css fájlok az ASP.NET MVC-projektből átmásolhatók az új projekt wwwroot könyvtárába. Ez a dokumentum ehelyett a következő szakaszban a CDN-eket használó Bootstrap (és más ügyféloldali kódtárak) támogatását adja hozzá.
Az elrendezésfájl migrálása
Másolja a fájlt az
_ViewStart.cshtmlASP.NET MVC-projekt könyvtárábólViewsa ASP.NET Core-projekt könyvtárábaViews. A_ViewStart.cshtmlfájl nem változott ASP.NET Core MVC-ben.Hozzon létre egy könyvtárat
Views/Shared.Szabadon választható: Másolja
_ViewImports.cshtmla FullAspNetCore MVC-projekt könyvtárábólViewsa ASP.NET Core-projekt könyvtárábaViews. Távolítsa el a fájlban lévő névtér-deklarációt_ViewImports.cshtml. A_ViewImports.cshtmlfájl névtereket biztosít az összes nézetfájlhoz, és bemutatja a címkesegítőket. A címkesegítők az új elrendezésfájlban használatosak. Az ASP.NET Core-hoz a_ViewImports.cshtmlfájl új.Másolja a fájlt az
_Layout.cshtmlASP.NET MVC-projekt könyvtárábólViews/Shareda ASP.NET Core-projekt könyvtárábaViews/Shared.
Nyissa meg _Layout.cshtml a fájlt, és végezze el a következő módosításokat (a befejezett kód alább látható):
Cserélje le
@Styles.Render("~/Content/css")a<link>betöltendőbootstrap.csselemre (lásd alább).Távolítsa el
@Scripts.Render("~/bundles/modernizr").Fűzzön megjegyzést a
@Html.Partial("_LoginPartial")vonalhoz (a sort körülölelje a következővel@*...*@: ). További információért lásd: Az autentikáció áttelepítése és Identity ASP.NET CoreCserélje le a
@Scripts.Render("~/bundles/jquery")elemet egy<script>elemre (lásd alább).Cserélje le a
@Scripts.Render("~/bundles/bootstrap")elemet egy<script>elemre (lásd alább).
A Bootstrap CSS-integráció cserejelölése:
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
A jQuery és a Bootstrap JavaScript beillesztésének helyettesítő jelölése:
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
A frissített _Layout.cshtml fájl alább látható:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
@*@Html.Partial("_LoginPartial")*@
</div>
</div>
</div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"></script>
@RenderSection("scripts", required: false)
</body>
</html>
A webhely megtekintése a böngészőben. Most már megfelelően kell betöltenie, a várt stílusokkal.
- Szabadon választható: Próbálja meg használni az új elrendezésfájlt. Másolja ki az elrendezésfájlt a FullAspNetCore projektből. Az új elrendezésfájl címkesegítőket használ, és más fejlesztésekkel is rendelkezik.
A kötegelés és a kicsinyítés beállítása
A csomagkonfigurálás és a minification konfigurálásáról további információt a Bundling és a Minification című témakörben talál.
HTTP 500-hibák megoldása
Számos probléma okozhat OLYAN HTTP 500-hibaüzeneteket, amelyek nem tartalmaznak információt a probléma forrásáról. Ha például a Views/_ViewImports.cshtml fájl olyan névteret tartalmaz, amely nem létezik a projektben, HTTP 500-hiba jön létre. Alapértelmezés szerint a ASP.NET Core-alkalmazásokban a UseDeveloperExceptionPage bővítmény hozzáadódik a IApplicationBuilder bővítményhez, és akkor lesz végrehajtva, amikor a konfiguráció fejlesztés. Lásd egy példát a következő kódban:
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
ASP.NET Core HTTP 500 hibaválaszokká alakítja a kezeletlen kivételeket. Ezek a válaszok általában nem tartalmazzák a hiba részleteit, hogy megakadályozzák a kiszolgálóval kapcsolatos bizalmas információk közzétételét. További információ: Fejlesztői kivételoldal.