Permalänk
Medlem

Bra tutorial för ASP.NET MVC

Kan ASP.NET Web Forms men MVC känns väldigt annorlunda. Någon som vet om en bra tutorial?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem
Skrivet av Larsp777:

Kan ASP.NET Web Forms men MVC känns väldigt annorlunda. Någon som vet om en bra tutorial?

Kika på https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-...
Det kanske ger ett litet hum om hur MVC känns. Personligen föredrar jag MVC alla dagar i veckan. 😊

Skickades från m.sweclockers.com

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

@jovnas:

Tack, den verkar bra!

Det står också om Razor-pages.

Razor används väl också i ett vanligt MVC-projekt.

Vet du vad skillnaden är egentligen?

Det står något om att det ska vara enklare?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem

Razor är bara en annan sorts View Engine där HTML filerna heter .cshtml istället för .aspx som i web forms.
Stora skillnaden är sättet man kallar på C# kod där man t.ex i .aspx använder

<%=minVariabel%>

Medan i Razor skriver man

@minVariabel

I razor är det lätt att blanda in HTML med t.ex

@for(int i = 1; i <= 10; i++) { <div> <p>Rad @i av 10</p> </div> }

Permalänk
Medlem
Skrivet av Terrell:

Razor är bara en annan sorts View Engine där HTML filerna heter .cshtml istället för .aspx som i web forms.
Stora skillnaden är sättet man kallar på C# kod där man t.ex i .aspx använder

<%=minVariabel%>

Medan i Razor skriver man

@minVariabel

I razor är det lätt att blanda in HTML med t.ex

@for(int i = 1; i <= 10; i++) { <div> <p>Rad @i av 10</p> </div> }

Ok. tack! Dock står det i på sidan du skickade:

"Razor Pages is a new alternative in ASP.NET Core 2.0, a page-based programming model that makes building web UI easier and more productive. We recommend you try the Razor Pages tutorial before the MVC version."

Eller missuppfattar jag något?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Inaktiv

kurser

@Larsp777: När jag gick från web forms till MVC så köpte jag en kurs på udemy.com med vad jag tycker är en grym lärare som går igenom MVC i .NET. Bra videos som har klara läromål och inget onödigt ältande.

Kan varmt rekommendera den, dom brukar rea ut kurserna så du kan få dom för 5-10 euro, väldigt prisvärt.

Denna köpte jag, hoppas det är OK att länka: https://www.udemy.com/the-complete-aspnet-mvc-5-course/

*redigerat till rätt länk*

Permalänk
Medlem

@anon237522:

Tack för tipset!

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem
Skrivet av anon237522:

@Larsp777: När jag gick från web forms till MVC så köpte jag en kurs på udemy.com med vad jag tycker är en grym lärare som går igenom MVC i .NET. Bra videos som har klara läromål och inget onödigt ältande.

Kan varmt rekommendera den, dom brukar rea ut kurserna så du kan få dom för 5-10 euro, väldigt prisvärt.

Denna köpte jag, hoppas det är OK att länka: https://www.udemy.com/the-complete-aspnet-mvc-5-course/

*redigerat till rätt länk*

Jag har börjat titta på kursen. Några saker som gör mig fundersam.

Han användre @viewbag, men det måste man inte om jag förstår saken rätt. Varför ska man använda viewbag?

När man kör programmet finns ju ingen URL att matcha mönstret efter. Är det default värde i routeconfig som används då?

Hur gör jag för att testa andra mönster?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Inaktiv
Skrivet av Larsp777:

Jag har börjat titta på kursen. Några saker som gör mig fundersam.

Han användre @viewbag, men det måste man inte om jag förstår saken rätt. Varför ska man använda viewbag?

När man kör programmet finns ju ingen URL att matcha mönstret efter. Är det default värde i routeconfig som används då?

Hur gör jag för att testa andra mönster?

Om man ska följa mvc-arkitekturen så bör man använda viewmodels för att skicka data till en vy. Viewbagen är vad jag förstått något man inte bör använda så mycket, men kam vara en bra lösning för Quick-and-dirty saker.

Ang URL så kan du försöka tänka bort första delen av URL, så oavsett om Du har localhost:65000 eller www.minsida.com så är det delarna efter som är det du sätter upp. T ex /Test/5 eller /customer/ .

Du kan dels ändra hur detta sköts genom routeconfig men även direkt på controllerna genom attributet [Route]

Skickades från m.sweclockers.com

Permalänk
Medlem

ViewBag känns alltid som ett fulhack som möjligen kan användas för enkla prototyper. I mitt dagliga arbete använder jag vymodeller istället i den mån det går.

Skickades från m.sweclockers.com

Visa signatur

Windows 11 Pro | Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Medlem

Försöker använda LINQ för att spara till databas men blir inte riktigt klok på hur det fungerar.

Några tips?

Det här med migrations, är det bara om man ska flytta över en databas?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem

@Larsp777: M:et i MVC står för models vilket du använder för att skapa upp din databas, för varje tabell du vill ha så skapar du en klass(model). Med hjälp av migrations förvandlas dina modeller till en databas. Så teoretiskt sätt så behöver du aldrig vara inne i någon databas manager och pilla, det mesta går att sköta via migrations etc.

I din ApplicationDBContext så anger du vilka modeller som du vill att migrations ska fylla databasen med

public DbSet<Room> Room { get; set; } public DbSet<Profile> Profile{ get; set; } public DbSet<Image> Images { get; set; }

När du gjort ändringar på dina modeller så går du in i din "package manager console" och kör:

add-migration ange_ett_migrations_namn

Nu skapar den en migrationsfil som håller koll på dina senaste ändringar

För att pusha detta till databasen så kör du en:

update-database

Nu bör du ha en fungerande databas

Linq är busenkelt när man har lärt sig det
Spara data:

var myObj = new Profile() { // skapa ett objekt av typen profil variable1 = "", variable2 = "", variable3 = "", }; _ctx.Profile.Add(myObj); //_ctx refererar till din ApplicationDbContext _ctx.SaveChanges();

Hämta data

var myObj = _ctx.Profile.Where(x => x.Id == 5) // Hämta profilen med ID == 5 .Include(x => x.Images).First(); //Inkludera relation till tabellen Images

Ändra data

myObj.Namn = "hej"; // Spara ändring _ctx.Entry(myObj).State = EntityState.Modified; _ctx.SaveChanges();

Permalänk
Inaktiv
Skrivet av Larsp777:

Försöker använda LINQ för att spara till databas men blir inte riktigt klok på hur det fungerar.

Några tips?

Det här med migrations, är det bara om man ska flytta över en databas?

Jag gissar på att du försöker använda entity framework som ORM? Det kan vara lite lurigt om man är ovan. Får du något felmeddelande när du testar? För att börja använda EF måste du dels ladda ner Nuget-paketet men också skriva enable-migrations i konsolen.

Migreringar är en uppdatering av databasen helt enkelt. Du kanske gjort ändringar i en modell och vill spegla det till databasen, då gör du en add-migration. Det finns riktigt bra tutorials om du söker på entity framework asp.net mvc.

Skickades från m.sweclockers.com

Permalänk
Medlem

Ok, tack! Ska kolla på det.

Har kolla på databaser men detta känns lite ovant.

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem

Jag tycker https://www.pluralsight.com/ har bra kurser.
Verkar vara nån 10 dagars free trial, signa upp där och spana ett par kurser om MVC och Entity Framework.

Denna kanske:
https://www.pluralsight.com/courses/entity-framework-6-gettin...

Se till att läsa på om Database First, Model First & Code First relativt omgående då det är viktigt att förstå och välja bland dessa 3 koncept.

Permalänk
Medlem
Skrivet av BasseBaba:

Jag tycker https://www.pluralsight.com/ har bra kurser.
Verkar vara nån 10 dagars free trial, signa upp där och spana ett par kurser om MVC och Entity Framework.

Denna kanske:
https://www.pluralsight.com/courses/entity-framework-6-gettin...

Se till att läsa på om Database First, Model First & Code First relativt omgående då det är viktigt att förstå och välja bland dessa 3 koncept.

Jag har Pluralsight men kan vara svårt att hitta bra kurser. Tycker vissa tar för givet att man har vissa förkunskaper eller förklara helt inte tillräckligt bra.

Ska kolla på dina tips.

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem
Skrivet av Larsp777:

Jag har Pluralsight men kan vara svårt att hitta bra kurser. Tycker vissa tar för givet att man har vissa förkunskaper eller förklara helt inte tillräckligt bra.

Ska kolla på dina tips.

Nä tyvärr kan det vara så, ofta får man då gå tillbaka nån version av kurserna och starta där, rätt drygt.
T ex är den kurs i EF6 jag länkade 2h 37 min.

Backar man då till EF5 av samma utbildare:
https://app.pluralsight.com/library/courses/entity-framework5...
Så är den helt plötsligt 4h 23m.

Har inget bättre tips än att bara nöta, jag har ju haft pluralsight så pass länge att jag "hunnit med" många kurser under åren.
Men var inte rädd för att spola och hoppa över "moduler", det känns riktig usa-style på många kurser, dom verkar ju få betalt för längd och inte innehåll.
Jag brukar mer eller mindre alltid skippa "intro" och "sammanfattning" vilket gör att man lätt kan sålla bort 10-20% av kurslängden för att komprimera tidsåtgång.
Många pratar även så långsamt att man utan problem kan köra 1,2-1,3x hastighet.

Permalänk
Medlem

@Larsp777:
Jag skulle säga att du kan hoppa över MVC helt och hållet, det är gammal stelbent teknik som kan användas till att skriva tråkiga statiska webapplikationer som kräver fulhack för att få dynamiska.

* Kika på react, vue eller angular och kör renderingen på klientsidan istället. Underlättar när du sedan skall köra partiell uppdatering av dina vyer.
* Kommunicera med servern via API:er (rest eller rpc eller vad som helst som returnerar json).
* Servera din html som statiskt innehåll (dvs. inga cshtml-filer).

Gör du detta så kommer du att kunna slippa mycket av inlåsningseffekten som microsofts ramverk ger. Du är byta backend för framtida projekt och fortfarande vara bekväm med frontend-sidan. Du kan även byta frontend-ramverk utan att behöva skriva om backend osv.

Ett alternativ, om du vill lära dig hur saker fungerar på riktigt, så kan du kika på att använda ex. node js. Där slipper du alla dåliga abstraktioner och kommer inte stöpas in i microsofts lasanga-antipattern som är typiskt för .net mvc-utvecklare.
Du får alltså chansen att lära dig web istället för ett specifikt ramverk.

Permalänk
Medlem
Skrivet av Bosnic:

@Larsp777: M:et i MVC står för models vilket du använder för att skapa upp din databas, för varje tabell du vill ha så skapar du en klass(model). Med hjälp av migrations förvandlas dina modeller till en databas. Så teoretiskt sätt så behöver du aldrig vara inne i någon databas manager och pilla, det mesta går att sköta via migrations etc.

I din ApplicationDBContext så anger du vilka modeller som du vill att migrations ska fylla databasen med

public DbSet<Room> Room { get; set; } public DbSet<Profile> Profile{ get; set; } public DbSet<Image> Images { get; set; }

När du gjort ändringar på dina modeller så går du in i din "package manager console" och kör:

add-migration ange_ett_migrations_namn

Nu skapar den en migrationsfil som håller koll på dina senaste ändringar

För att pusha detta till databasen så kör du en:

update-database

Nu bör du ha en fungerande databas

Linq är busenkelt när man har lärt sig det
Spara data:

var myObj = new Profile() { // skapa ett objekt av typen profil variable1 = "", variable2 = "", variable3 = "", }; _ctx.Profile.Add(myObj); //_ctx refererar till din ApplicationDbContext _ctx.SaveChanges();

Hämta data

var myObj = _ctx.Profile.Where(x => x.Id == 5) // Hämta profilen med ID == 5 .Include(x => x.Images).First(); //Inkludera relation till tabellen Images

Ändra data

myObj.Namn = "hej"; // Spara ändring _ctx.Entry(myObj).State = EntityState.Modified; _ctx.SaveChanges();

Har kollat lite på EF med database first. Är detta database first, alltså finns din databas redan?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Medlem

Har använt Entity Framework database first lite innan.

Code First i kursen på Udemy känns väldigt komplicerat.

Har för mig att man får någon lista med dbcontext. Kan man skicka denna till en View istället?

Jag har följt denna tutorial:

ASP.NET MVCASP.NET MVC

Har då denna action i en controller:

public ActionResult ListMovies() { List<MovieModel> movie = new List<MovieModel>(); movie.Add(new MovieModel { FirstName = "Lars", LastName = "Persson" }); movie.Add(new MovieModel { FirstName = "Olle", LastName = "Goop" }); movie.Add(new MovieModel { FirstName = "Kajsa", LastName = "Anka" }); return View(movie); }

Sedan en view:

@model IEnumerable<ASPLektion.Models.MovieModel> @{ ViewBag.Title = "ListMovies"; } <h2>ListMovies</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.FirstName) </th> <th> @Html.DisplayNameFor(model => model.LastName) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.FirstName) </td> <td> @Html.DisplayFor(modelItem => item.LastName) </td> <td> @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) </td> </tr> } </table>

Hur kan jag enklast spara (och hämta/updatera/Ta bort) med hjälp av LINQ?

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10

Permalänk
Skrivet av Larsp777:

Kan ASP.NET Web Forms men MVC känns väldigt annorlunda. Någon som vet om en bra tutorial?

Model = datavärde, utläsning, kanal

View = vad som sänds på kanalen

Controller = Tv-apparat

Controller hämtar informationen från modellen, sedan uppdaterar modellen en ny information på view class

controller->model-> view
controller->view

Permalänk
Medlem
Skrivet av OneArmy113:

Model = datavärde, utläsning, kanal

View = vad som sänds på kanalen

Controller = Tv-apparat

Controller hämtar informationen från modellen, sedan uppdaterar modellen en ny information på view class

controller->model-> view
controller->view

Tack!

Visa signatur

Chassi: Fractal Design Define C || Processor: Intel i7-8700K || Grafikkort: ASUS GeForce GTX 1080Ti ROG Strix Gaming || Moderkort: Gigabyte Z370 AORUS ULTRA WIFI || Minne: Corsair Vengeance LPX DDR4 3000MHz 32 Gb || Lagring: Samsung 860 EVO 1TB SSD || PSU: Seasonic Focus+ 850W 85+ GOLD PSU || Skärm:Samsung Odyssey G9 || Windows 10