Forumdelen sponsras av

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2004
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

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

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

@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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Plats
Halland
Registrerad
Okt 2013

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> }

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Registrerad
Feb 2014

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*

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

@jcrew:

Tack för tipset!

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
Skrivet av jcrew:

@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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Registrerad
Feb 2014
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

Trädvy Permalänk
Medlem
Plats
STHLM
Registrerad
Apr 2008

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

Sent from my Nokia 3310 using Snake 2

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Plats
Värnamo
Registrerad
Maj 2012

@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();

Trädvy Permalänk
Medlem
Registrerad
Feb 2014
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

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

Ok, tack! Ska kolla på det.

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

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Registrerad
Aug 2002

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.

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
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.

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Registrerad
Aug 2002
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.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Sep 2009

@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.

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
Skrivet av SpaceWeed:

@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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008

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?

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10

Trädvy Permalänk
Medlem
Registrerad
Mar 2017
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

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Jan 2008
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!

Chassi: Cooler Master Stacker 831 svart || Intel i5-3570K || Asus GeForce GTX 680 DirectCU II 2GB || Asus P8Z77-V LE PLUS || Kingston HyperX Genesis 4x4GB || Intel SSD 335 180 GB || Windows 10