
A quick demo of the application we're going to build in this course.
In this lecture, I'll explain all the building blocks of MVC architectural pattern and their responsibilities. You'll learn about models, controllers, views, routers and the benefit of MVC pattern.
In this lecture, I'll show you the tools we'll be using to build our video rental app.
In this lecture, we'll create our first ASP.NET MVC app and I'll walk you through various files and folders in the project. By the end of this lecture, you'll know where everything should be.
Next, I'll show you the building blocks of MVC architectural pattern in action. We'll add a model, a controller and a view to build a new page where we display the name of a movie.
The default template that comes with ASP.NET MVC project template looks pretty boring. In this video, I'll show you how to replace it with a beautiful and modern theme.
A quick overview of how this course is structured.
A quick introduction about what you're going to learn in this section.
In this lecture, we'll examine action results in more detail. You'll learn about various types of results we can return from our actions.
In the last lecture, you learned about action results, which are the outputs of our actions. In this lecture, you'll learn about action parameters, which are the inputs to our actions. You'll learn how ASP.NET MVC frameworks maps request data to action parameters.
The default route in ASP.NET MVC works for most cases, but not always. In this lecture, you'll learn how to create a custom route with multiple parameters, and how to use regular expressions to apply constraints on these parameters.
Convention-based routing is a poor way of creating custom routes. As the number of custom routes increases, sooner or later, it'll turn into a mess. In this video, I'll show you attribute routing as a cleaner and more maintainable way to create custom routes.
In this lecture, you'll learn about ViewData and ViewBag and why you should avoid using them.
There are times that we need to pass more than one model to a view. That's when we use a view model. A view model is a class the encapsulates the data and rules for a view. In this video, you'll learn how to create and use a view model.
In this video, we'll explore the razor view syntax in ASP.NET MVC. You'll learn how to:
In this lecture, you'll learn how you can partial views to break up a large view with a lot of mark up, into smaller, more maintainable partial views.
Summary of what you've learned in this section.
As part of this exercise, you'll create two pages, one to display the list of customers and the other to display the details about that customer.
In this lecture, I'll introduce you to the GitHub repository I've created for this course. With this repository, you can see my individual commits as well as solution to exercises.
Summary of what you've learned in this section and what is coming next.
A quick overview of what you're going to learn in this section.
What is Entity Framework and why do we need it? In this short video, I answer these questions.
There are two different workflows to using Entity Framework: Database-first and Code-first. In this lecture, I explain how these workflows work and why I always prefer code-first workflow.
We use code-first migrations to bring the database schema up to date with the domain model of our application. In this lecture, you'll learn how to use code-first migrations to generate and migrate a database.
In this lecture, we extend the domain model of our app and introduce some complexity. Then, we use code-first migrations again to migrate the database.
Sometimes we need to deploy reference data with our application. Examples of this are list of genres, or membership types supported by our application. In this lecture, you'll learn how to seed the database using code-first migrations and ensure consistent reference data across different database environments.
Code-first uses convention over configuration. While the conventions assumed by Entity Framework work in most situations, sometimes we need to override them. In this lecture, you'll learn how to override code-first conventions using data annotations.
Now that you've learned the fundamentals of Entity Framework, it's time to replace the hardcoded data in our application with real data fetched from the database. This lecture shows you how.
Sometimes we need to load an object with its related objects. This is referred to as eager loading. In this lecture, you'll learn how to use eager loading to load load customers and their membership types.
When using the code-first workflow, we use Package Manager Console quite often. In this lecture, I'll show you how to create a custom shortcut to quickly open up Package Manager Console.
Summary of what you've learned in this section.
In this exercise, you'll slightly change the domain model of the application and use code-first migrations to bring the database up to date. Next, you use another migration to update existing reference data in the database.
As part of this exercise, you extend the customer details page and show various attributes about a given customer. You'll also add the Birthdate property to the Customer type and again use code-first migrations to bring the database up to date.
In this exercise, you replace the hardcoded list of movies with the movies in the database. You'll also introduce a new type (Genre) and populate the corresponding table using code-first migrations.
Summary of what you've learned in this section and what is coming next.
A quick introduction about what you're going to learn in this section.
In this video, you'll learn the mark up we use to build modern and responsive forms. You'll also learn about common HTML helpers like LabelFor, TextBoxFor, DropDownListFor, CheckBoxFor, and so on.
In this video, you'll learn how to override the labels in your forms using the Display annotation.
Rendering drop-down lists requires a little bit extra work. This video teaches you how to encapsulate your data in a view model and render a drop-down list using @Html.DropDownListFor and SelectList.
In this video, you'll learn what model binding is and how it works.
Our form is ready. Now it's time to save the data. This video shows you how to persist data using Entity Framework.
In this video, we'll re-use the form we created earlier to edit an existing customer.
In this video, I explain the issues with TryUpdateModel in ASP.NET MVC and why you should avoid it. You'll also learn how to update data using Entity Framework.
A quick summary of what you've learned in this section.
As part of this exercise, you'll build a form to add / edit movies.
One of the common mysterious exceptions with Entity Framework is DbEntityValidationException. In this video, you'll learn what this exception is, how to find the actual source of the problem and how to resolve it.
Summary of what you've learned in this section and what is coming next.
A quick introduction about what you're going to learn in this section.
In this lecture, I'll show you the 3 steps you need to follow to add validation to your forms.
Validation errors are black by default. In this lecture you'll learn how to apply a style to them to make them stand out.
This lecture lists the standard data annotations that you can use in your ASP.NET MVC applications.
Standard data annotations are good, but not enough. Sometimes you need custom validation. In this lecture, I'll make up a business rule for our application and show you how to implement a custom validator for one of the fields in our form.
In this video, you'll learn a technique to remove magic numbers from your code and improve its readability and maintainability.
As a usability best practice, it's good to display a summary message on top of a form with invalid fields. This lecture shows you how.
Client-side validation is not enabled in your ASP.NET MVC applications by default. In this video, I'll show you how to enable it.
In this video, I'll show you a security vulnerability in our form that allows an attacker create customers on behalf of a user without their knowledge. This is referred to as CSRF or Cross-site Request Forgery. Once you understand how it works, you'll learn how to prevent it.
Summary of what you've learned in this section.
In this exercise, you'll add validation to add/edit movie form.
In this video, I introduce you to what I call "pure view models". You'll also learn a few simple ways to refactor your code and make it cleaner and more maintainable.
Summary of what you've learned in this section and what is coming next.
A quick introduction about what you're going to learn in this section.
In this lecture, you'll learn about HTTP services or Web APIs and their benefits along with some real-world examples.
In this lecture, you'll learn the basics of RESTful convention for building http services or web APIs.
In this lecture, we'll build an API for CRUD operations around customers.
In this lecture, I'll introduce you to a very useful, simple and lightweight Chrome plug-in for testing Web APIs.
There are two issues in the implementation of the API we've built. The contract of this API is fragile and can break easily. Also, there are security holes in this API. So, in this video, I'll show you how to use a data transfer object to resolve these issues.
Mapping domain objects to DTOs and vice versa can be tedious. So, in this lecture, I'll show you a simple convention-based mapping tool AutoMapper.
By default, ASP.NET Web API uses pascal naming convention in the JSON objects returned from Web APIs. But using objects with pascal naming convention is ugly in Javascript as we use camel casing in Javascript. In this lecture, I'll show you how to enable camel casing in Web API.
While we can simply return types like Customer or IEnumerable<Customer> from our APIs, to better confirm with RESTful conventions, we need more control over the generated response. In this lecture, I'll show you how to use IHttpActionResult to achieve that.
A quick summary of what you've learned in this section.
As part of this exercise, you'll build an API for CRUD operations around movies.
Summary of what you've learned in this section and what is coming next.
A quick introduction about what you're going to learn in this section.
In this lecture, you'll learn how to use jQuery AJAX to call an API. We'll use this technique to delete a customer.
The native confirmation box in JavaScript is pretty boring. So, in this video I'll show you how to display beautiful and modern Bootstrap dialog boxes.
A simple change in how you handle events in jQuery can have a noticeable impact on how much of the browser's memory your application uses. This video shows you how.
In most applications where we display tabular data, we often need to implement searching, sorting and pagination in our tables. In this video, I'll introduce you to DataTables plug-in, which gives you all this functionality without writing any additional code.
While you can initialize a DataTable using the existing data in the DOM, it's better and more efficient to load it using data from an API. In this video, we'll configure our DataTable to use the customers API as its data source.
Sometimes your APIs need to return hierarchical data. This video shows you the necessary steps required to do this.
When using DataTables plugin, you shouldn't remove rows from the DOM, because the data is still in the internal list of DataTable. In this video, I'll show you how to properly remove a row.
In this video, I'll briefly discuss a couple of things about performance of data tables when dealing with a large dataset, as well as refactoring our JavaScript code.
What are single page applications and what advantages do they provide? This video gives you the answers.
A quick summary of what you've learned in this section.
As part of this exercise, you'll add DataTables to the list of movies. You'll also use Bootbox and jQuery AJAX to delete a movie.
A summary of what you've learned in this section and what is coming next.
A quick introduction about what you're going to learn in this section.
In this lecture, we'll explore the authentication/authorization requirements for our application.
There are various ways to authenticate users in ASP.NET MVC apps. In this lecture, I'll show you various authentication options and I'll explain when to use each.
ASP.NET MVC applications use a framework called ASP.NET Identity for controlling authentication and authorization. In this lecture, I'll give you an overview of the architecture of ASP.NET Identity.
In this lecture, you'll learn how to restrict access to certain actions to authenticated users.
In this lecture, I'll show you a reliable workflow for seeding your database with users and roles. With this workflow, you can deploy your application to any environments (testing, staging, production) and they all will have the same default users and roles.
In many real-world applications, the roles a user has determine what they can see and perform in the application. In this lecture, you'll learn how to restrict managing movies to admin users.
The IdentityUser class that comes with ASP.NET Identity is very basic. In most real-world applications, you need to add additional properties to this user. We refer to these extra properties as "profile". In this lecture, you'll learn how to extend ASP.NET Identity users and capture extra properties during the sign up process.
In this lecture, you'll learn about OAuth protocol and how it enables you to let users log in using their Facebook, Google, Twitter and other social accounts.
In this lecture, we'll extend our application and enable users to log in using their Facebook account.
A chat sheet for quickly reviewing what you've learned in this section.
A few exercises that help you master what you've learned in this section.
A quick overview of what you've learned in this section and what is coming next.
A quick introduction about what you're going to learn in this section.
In this lecture, I'll introduce you to three-tier architecture and the impact of performance tuning in each tier.
This lecture provides various strategies for optimizing performance at the data tier.
Glimpse is an extremely useful and popular profiling tool amongst ASP.NET MVC developers. In this lecture, I'll give you an overview of using Glimpse.
In this lecture, you'll learn how to cache the output of actions (HTML) so subsequent requests are served from the cache.
Sometimes you need to store data (instead of HTML markup) in the cache. This lecture shows you how.
A common misconception about asynchronous programming in .NET 4.5 (async/await) is that it improves the performance of an application. In this lecture, I'll uncover this misconception.
In this lecture, I'll introduce you to debug / release builds and their differences.
In the old days, session was a popular storage for temporary data during user's browsing session. These days, session does not have much place in modern, scalable apps. In this lecture, I'll explain why.
In this lecture, I'll show you a few techniques for optimizing performance at the client tier.
Sometimes during development, you may get unexpected results from your actions. This could be due to browser caching. In this lecture, I'll show you how to disable caching in Chrome Developer Tools.
A cheat sheet to quickly review what you've learned in this section.
A quick summary of what you've learned in this section and what's coming next.
A quick introduction about what we're going to build in this section.
In this lecture, we'll examine the New Rental use case in detail. This will guide us in the right direction to implement this feature.
Our domain model currently doesn't support rentals. So, in this lecture, we'll examine the necessary changes we need to make to the domain. As an exercise, you're required to make these changes in the code and bring the database up to date using code-first migrations.
In this lecture, we'll review my code for updating the domain and bring our database up to date. Next, as an exercise, you'll implement the happy path for our API.
Our happy path is ready. Next, we look at the availability of movies as part of our rental process. I'll show you two different solutions to determine availability of movies and compare them side by side. Finally, as an exercise, you'll make the necessary changes in the code to add support for determining availability.
In this lecture, we'll look at various edge cases for our new rental use case. I'll show you two ways to handle these edge cases (defensive and optimistic). You'll see the difference between these two approaches in action.
In the previous sections, we used HTML forms to send data to the server. In this section, we're going to use a different approach: we'll use AJAX. As part of this section, I'll show you a great technique for creating HTML markup fast. It's called Zencoding!
We have a basic form. Now, it's time to add details. In this lecture, you'll learn how to add autocompletion to a text box using Typeahead jQuery plugin.
The user should be able to select multiple movies. As they look up movies in the suggestion list, we should add them to the page. We need to update the DOM. In this lecture, you'll learn how to do this. I'll also briefly talk about data binding, what it is and how it helps us write cleaner, more maintainable and testable code.
This lecture is all about HTML and CSS techniques to improve the look and feel of our form.
In this lecture, we'll modify one of our APIs and add support to filter records. As an exercise, you'll make a similar change in another API endpoint.
Our form is almost ready. In this lecture, you'll learn how to submit data using AJAX to our API.
In this lecture, you'll learn how to use the jQuery Toastr plug-in to display toast notifications.
And finally, we'll implement client-side validation using jQuery validation plugin. You'll learn how to create custom validation rules and plug them into your forms.
In this lecture, we'll review my code and fix a couple of small bugs in our form.
A quick recap of the systematic approach to build a feature end to end.
With over 40,000 happy students and 12,000+ positive reviews, this course is Udemy's most popular course for learning ASP.NET MVC!
ASP.NET MVC is a server-side web framework for building dynamic, data-driven web applications. Since its first release in 2009, it has gained a lot of popularity amongst developers using Microsoft technologies. If you want to get employed as a web developer at a company that utilizes Microsoft technologies, you need to master ASP.NET MVC.
In this course, Mosh, author of several best-selling courses on Udemy, takes you on a fun, hands-on and pragmatic journey to master ASP.NET MVC 5.
In 7.5 hours of high-quality content (equivalent to a 500-page book), you'll learn how to build and deploy fast and secure web applications with ASP.NET MVC 5.
By the end of watching this course, you'll be able to:
You'll start building a real-world video rental application within minutes. Every section includes a few bite-sized videos, and concludes with one or more coding exercises to help you master what you learn in that section. Finally, in the last section, you'll learn how to
Whether you're new to ASP.NET MVC or have some experience but are looking for a course to fill in the gaps, you'll love this course. On top of all the core features of ASP.NET MVC, Mosh teaches you a systematic way to build a feature end-to-end. And more importantly, he includes you as part of building a sophisticated feature end-to-end. So, he builds some parts and delegates the other parts to you.
If you've taken any of Mosh's courses before, you know what you get. He is very passionate, clear and concise in his teaching. Every section and every lecture has been perfectly thought through to lead you on a step-by-step journey from zero to hero with no fluff whatsoever. If you're looking for 10+ hours of wasted time on the content you don't need and a rambling instructor, there are other courses you can enrol in.
PREREQUISITES
In order to take this course, you should have at least 3 months experience programming in C#. Also, any familiarity with Entity Framework will be helpful but not required.
If you need to strengthen your C# skills or learn Entity Framework in depth, you can watch Mosh's related courses:
So, if you watch all the lectures and do all the exercises, by the end of this course, you'll have the necessary skills to build real-world applications with ASP.NET MVC 5, or all your money back (within 30 days of taking the course).
So, if you're looking for an ASP.NET MVC course with
Don't look further. Enroll in the course now and learn to build and deploy fast and secure web applications with ASP.NET MVC 5.
FREQUENTLY ASKED QUESTIONS
1- Does this course cover ASP.NET Core 1.0?
No! Once you master ASP.NET MVC 5, you can quickly get up to speed with ASP.NET Core. Mosh has a follow up course on Udemy called "Build a Real-world App with ASP.NET Core and Angular". In this course, you'll get up to speed with ASP.NET Core in the context of building a real app from A to Z.
2- Why should I pay for this course when there are lots of free tutorials available?
Free tutorials and YouTube videos are free for a reason. They introduce you to a few concepts here and there, but soon you'll find yourself jumping from one tutorial to another to fill the missing gaps. By taking a perfectly-structured course, you'll be confident that you're in good hands, right from the beginning all the way through to the very end. You pay for saving your precious time: the time that you can spend on the things you love.
Plus, many of these free tutorials, including tutorials published by Microsoft on the official ASP.NET website, teach you poor practices. Throughout this course, Mosh points out some of these poor practices and explains in technical terms why you should avoid them.
WHAT OTHER STUDENTS WHO HAVE TAKEN THIS COURSE SAY
"The is course is very much worth your time and money. Mosh did an outstanding job explaining each aspect of MVC 5 as well as introducing and using other technologies such as Web API. I've been working with MVC since it's release but felt I needed a refresher course and this was excellent. I would also recommend it to developers just getting into MVC as well because Mosh does a great job of explaining the concepts behind what you're learning. I really enjoyed it and highly recommend it." -Scott Smith
"Course teaches exactly what the title promises to teach. Quality of production, content, and lectures are excellent! Explanations of the how and why are also a nice touch!" -Pierre Gadea
"Mosh never disappoints. Clear explanations. Exercises that will test you knowledge. Great instruction as always. I also love that he includes shortcuts and best practices. Worth the time and money!" -Lara Caves
"Amazing course from Mosh! After I finished the C# series, I moved directly to this course and learn so much and even developed a successful web app in my internship! Thanks Mosh for a great course!!" -Menny Atia
"I've been into web development for more than 15 years, but until recently I was totally new to ASP.NET MVC. Before taking this course I tried other courses, but these were either too complicated for a beginner or didn't cover all the necessery informations needed to get started. This is an excellent course to begin with ASP.NET MVC that covers everything you need to create a real world project. The prerequisites are a good understaning of C# (OOP, Lambdas, LINQ...) , Javascript and JQuery" -Marko Pavic
"Professionally structured, carefully planned course. Passionate, engaging instructor with great communication skills. Best course I've ever had on Udemy so far. I would love to take the follow-up course on architecture and testing mentioned in the final video." -Istvan Voros
"One of the best courses i have ever taken,Recommend for every C# developer through his all the courses in Udemy. They are eye-openers and it will change the way you think about Programming.After taking his courses ,with in a span of one month i have a cracked a interview in one of the Big 4 with 70% hike." -Rama Reddy
30-DAY FULL MONEY-BACK GUARANTEE
This course comes with a 30-day full money-back guarantee. Take the course, watch every lecture, and do the exercises, and if you feel like this course is not for you, ask for a full refund within 30 days. All your money back, no questions asked.
ABOUT YOUR INSTRUCTOR
Mosh (Moshfegh) Hamedani is a software engineer with 17 years of professional experience. He is the author of several best selling Udemy courses with more than 120,000 students in 192 countries. He has a Master of Science in Network Systems and Bachelor of Science in Software Engineering. His students describe him as passionate, pragmatic and motivational in his teaching.
Do you want to learn how to build and deploy fast and secure web application with ASP.NET MVC 5?
If you enroll in the course now, you'll start building your first ASP.NET MVC app within a few minutes. Join the other 40,000+ students who have taken this course now and get started.