Skip to content
Home » Mvc 5 Visual Studio 2017 | Create Your First App

Mvc 5 Visual Studio 2017 | Create Your First App

Mvc 5 on Visual Studio 2017

Hướng dẫn tạo 1 project ASP.Net MVC, giải thích cấu trúc và vai trò của View, Controller

Đầu tiên các bạn mở Visual Studio lên, sau đó ngay tại thanh menu bạn chọn FILE >New >Project hoặc là cách đơn giản hơn là bạn nhấn tổ hợp phím tắt Ctrl + Shift + N

Sau khi bạn làm xong bước trên, chúng ta tiếp tục làm theo như hình nhé.

  • Sau khi bảng hội thoại hiện lên, bạn chọn Visual C# > Web > ASP.NET Web Application.
  • Tại ô (4) bên cạnh vị trí Name bạn đặt tên cho project.
  • Chọn Browse… để chọn nơi lưu project.
  • Cuối cùng bạn chọn OK.

Sau khi bạn nhấn OK ở bước trên thì sẽ có 1 bảng hội thoại xuất hiện các bạn làm theo hình nhé

  • Các bạn lưu ý trong phần Select a template có rất nhiều lựa chọn, tuy nhiên để học khóa học này các bạn chọn MVC nhé, sau đó chọn OK để kết thúc việc tạo project.

Sau khi hoàn thành việc tạo project, bây giờ chúng ta cùng đi phân tích cấu trúc của nó nhé.

  • Như hình mình show ra cho các bạn ở phía trên, vùng màu đỏ chính là Controller, vùng màu xanh là Models và vùng màu tím chính là Views trong mô hình MVC
  • Tương ứng với 1 controller thì sẽ có 1 view đi kèm theo, mặc định project khi tạo gồm có 2 controller đó là Account và Home vì vậy các bạn sẽ thấy có 2 folder đó là Account và Home trong phần View. Do ban đầu chúng ta chưa truy xuất cơ sở dữ liệu nên models mình sẽ chưa đề cập đến trong bài học ngày hôm nay.

Khi project được tạo ra thì chúng ta có thể chạy project lên brower, vậy để chạy được các bạn làm như sau:

  • Trên thanh menu bạn sẽ nhìn thấy nút mũi tên màu xanh, đây là nút giúp bạn Run project lên, tuy nhiên ban đầu nếu bạn nào thấy tại nút này không có hiển thị trình duyệt mặc định trong máy mình như cốc cốc, chrome, firefox … thì các bạn chọn Browse With..
  • Sau khi chọn, 1 hộp thoại hiện lên, đầu tiên các bạn chọn trình duyệt mà mình muốn sử dụng mặc định khi chạy project lên, sau đó các bạn chọn Set as Default, vậy là các bạn đã hoàn thành.
  • Để chạy project bạn click vào nút Run Project

Giao diện hiển thị khi chạy thành công như hình

Vậy có bạn nào tự hỏi là tại sao lại có màn hình này chạy lên khi chúng ta chạy project lên ban đầu không? Rất dễ hiểu các bạn ạ, các bạn cùng theo dõi giải thích phía dưới nhé

Để giải thích cho lý do mà mình nêu ra ở phần trên thì trước tiên các bạn vào mục Controller.

Sau đó các bạn chọn và mở HomeController lên thì sẽ thấy kết quả như hình dưới

Khi vào HomeController thì bạn sẽ thấy màn hình như phía trên. Các bạn để ý nhé, trong Controller có cung cấp 1 phương thức có tên gọi là ActionResult. Phương thức này trả về rất nhiều kiểu dữ liệu khác nhau, và trong trường hợp này các bạn thấy kiểu trả về là View().

  • View() là 1 trong các kiểu dữ liệu được trả về từ hàm ActionResult , trong khuôn khổ bài này mình sẽ không phân tích rõ về phương thức ActionResult mà sẽ có bài hướng dẫn rất rõ về nội dung này.
  • Kiểu trả về View() dùng để hiển thị giao diện mà mình muốn xuất ra cho người dùng khi ActionResult được gọi lên.

Ở phần trên mình có đề cập, 1 Controller sẽ có 1 View kèm theo, các bạn hãy xuống phần View mở folder đó ra.

Như các bạn thấy, trong HomeController bao gồm 3 ActionResult đó là About, Contact, Index. Mà cả 3 ActionResult này đều trả về kiểu dữ liệu là View() vì vậy trong folder home sẽ cũng có 3 View tương ứng cho 3 ActionResult đó.

Cụ thể khi ActionResult Index được gọi lên thì Index.cshtml sẽ được hiển thị, và 2 cái còn lại tượng tự như vậy. Bây giờ, bạn click vào Index.cshtml để xem nội dung của file này thì các bạn sẽ thấy nội dung của nó giống y chang nội dung được hiển thị khi chúng ta chạy project lên.

Nhìn vào hình vẽ thì các bạn cũng thấy giao diện đó chính là do file Index.cshtml hiển thị, có nghĩa là ActionResult Index được gọi lên ban đầu, vậy lại có 1 câu hỏi đặt ra là tại sao trong HomeController gồm có 3 ActionResult mà cái Index lại được mặc định chạy đầu tiên mà không phài là About hay Contact? Các bạn chú ý nhé!

  • Các bạn mở folder App_Start > mở file RouteConfig.
  • Như các bạn thấy, trong RouteConfig tại 2 vị trí mà mình trỏ mũi tên vào thì đó là nguyên nhân khi các bạn chạy project lên là ActionResult Index được hiển thị mà không phải là About hay Contact.
  • Controller được gọi lên là HomeController, trong đó ActionResult Index được thực thi. Các bạn có thể thay đổi Controller và Action nào mà các bạn muốn mặc định chạy lên ban đầu.
  • Qua những giải thích đó thì các bạn đã hiểu về View, Controller cũng như cách hoạt động của chúng rồi, vậy để xuất câu “Hello Howkteam” chúng ta sẽ đi qua phần thứ 2 nhé

Xuất câu “Hello Howkteam” trong ASP.Net MVC

Ở phần thứ nhất các bạn đã nắm được cách hoạt động của View, Controller rồi, bây giờ chúng ta cùng tạo 1 ví dụ đơn giản đó là xuất ra câu “Hello Howkteam” nhé.

  • Đầu tiên các bạn Controllers > Add > Controller
  • Tại giao diện này, các bạn chon MVC 5 Controller – Empty, sau đó chọn Add
  • Tại giao diện này, các bạn nhập tên Controller, mình để là Example rồi nhấn Add
  • Tiếp theo, để hiển thị câu “Hello Howkteam” chúng ta cần có View hiển thị, cách tạo View như sau
  • Bạn click phải chuột vào Index > chọn Add View. Sau đó các bạn làm theo các bước sau
  • Tại Template các bạn chọn Empty (without model), các bước còn lại làm theo hình nhé.
  • Sau khi tạo View Index xong thì để xuất câu “Hello Howkteam” thì bạn thay đổi 1 chút:
  • Tại thẻ bạn thay đổi nội dung bên trong: “Index” > “Hello Howkteam”. Sau đó các bạn vào RouteConfig trong App_Start để thay đổi Controller và Action > để chúng ta mặc định hiển thị trang chứa dòng chữ “Hello Howkteam” hiện lên đầu tiên
  • Tại controller bạn thay đổi nội dung bên trong Home > Example, còn action thì các bạn giữ nguyên giá trị là Index sau đó các bạn Run project lên kiểm tra, nếu màn hình chạy đúng như hình phía dưới thì các bạn đã tạo ví dụ thành công
Mvc 5 on Visual Studio 2017
Mvc 5 on Visual Studio 2017

Lập trình website với ASP.Net MVC cơ bản

Danh sách bài học

Dẫn nhập

Qua bài giới thiệu tổng quát về ASP.Net MVC đầu tiên, các bạn đã phần nào hiểu được cấu trúc cũng như cách thức hoạt động của nó.

Tuy nhiên, đã là lập trình thì không thể không thực hành, vì vậy trong bài học ngày hôm nay, mình sẽ hướng dẫn do các bạn cách tạo 1 project ASP.Net MVC và chúng ta sẽ làm 1 ví dụ đơn giản nhưng khá kinh điển đó là xuất câu “Hello Howktem”, qua ví dụ này các bạn sẽ nắm rõ về cách hoạt động của ASP.Net MVC bây giờ chúng ta cùng đi vào bài học nhé.

Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

  • Biết cách cài đặt Visual Studio bản 2012 trở lên, nếu chưa biết hay chưa cài đặt được thì các bạn tham khảo qua bài này nhé: Cài đặt môi trường phát triển (IDE) Visual studio 2015
  • Đã đọc qua bài: Giới thiệu tổng quan về công nghệ web ASP.Net MVC
  • Biết C# căn bản là 1 lợi thế, tuy nhiên nếu chưa có thì cũng không sao, các bạn sẽ được hướng dẫn cụ thể.

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Hướng dẫn tạo 1 project ASP.Net MVC, giải thích cấu trúc và vai trò của View, Controller
  • Xuất câu “Hello Howktem” sử dụng ASP.Net MVC

Initialize DB with test data

Entity Framework can automatically create (or drop and re-create) a database for you when the application runs. You can specify that this should be done every time your application runs or only when the model is out of sync with the existing database. You can also write a

Seed

method that Entity Framework automatically calls after creating the database in order to populate it with test data.

The default behavior is to create a database only if it doesn’t exist (and throw an exception if the model has changed and the database already exists). In this section, you’ll specify that the database should be dropped and re-created whenever the model changes. Dropping the database causes the loss of all your data. This is generally okay during development, because the

Seed

method will run when the database is re-created and will re-create your test data. But in production you generally don’t want to lose all your data every time you need to change the database schema. Later you’ll see how to handle model changes by using Code First Migrations to change the database schema instead of dropping and re-creating the database.

  1. In the DAL folder, create a new class file named SchoolInitializer.cs and replace the template code with the following code, which causes a database to be created when needed and loads test data into the new database.


    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using ContosoUniversity.Models; namespace ContosoUniversity.DAL { public class SchoolInitializer : System.Data.Entity. DropCreateDatabaseIfModelChanges

    { protected override void Seed(SchoolContext context) { var students = new List

    { new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")}, new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")}, new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")}, new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")}, new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")} }; students.ForEach(s => context.Students.Add(s)); context.SaveChanges(); var courses = new List

    { new Course{CourseID=1050,Title="Chemistry",Credits=3,}, new Course{CourseID=4022,Title="Microeconomics",Credits=3,}, new Course{CourseID=4041,Title="Macroeconomics",Credits=3,}, new Course{CourseID=1045,Title="Calculus",Credits=4,}, new Course{CourseID=3141,Title="Trigonometry",Credits=4,}, new Course{CourseID=2021,Title="Composition",Credits=3,}, new Course{CourseID=2042,Title="Literature",Credits=4,} }; courses.ForEach(s => context.Courses.Add(s)); context.SaveChanges(); var enrollments = new List

    { new Enrollment{StudentID=1,CourseID=1050,Grade=Grade.A}, new Enrollment{StudentID=1,CourseID=4022,Grade=Grade.C}, new Enrollment{StudentID=1,CourseID=4041,Grade=Grade.B}, new Enrollment{StudentID=2,CourseID=1045,Grade=Grade.B}, new Enrollment{StudentID=2,CourseID=3141,Grade=Grade.F}, new Enrollment{StudentID=2,CourseID=2021,Grade=Grade.F}, new Enrollment{StudentID=3,CourseID=1050}, new Enrollment{StudentID=4,CourseID=1050,}, new Enrollment{StudentID=4,CourseID=4022,Grade=Grade.F}, new Enrollment{StudentID=5,CourseID=4041,Grade=Grade.C}, new Enrollment{StudentID=6,CourseID=1045}, new Enrollment{StudentID=7,CourseID=3141,Grade=Grade.A}, }; enrollments.ForEach(s => context.Enrollments.Add(s)); context.SaveChanges(); } } }




    The


    Seed

    method takes the database context object as an input parameter, and the code in the method uses that object to add new entities to the database. For each entity type, the code creates a collection of new entities, adds them to the appropriate

    DbSet

    property, and then saves the changes to the database. It isn’t necessary to call the

    SaveChanges

    method after each group of entities, as is done here, but doing that helps you locate the source of a problem if an exception occurs while the code is writing to the database.

  2. To tell Entity Framework to use your initializer class, add an element to the


    entityFramework

    element in the application Web.config file (the one in the root project folder), as shown in the following example:

    The


    context type

    specifies the fully qualified context class name and the assembly it’s in, and the

    databaseinitializer type

    specifies the fully qualified name of the initializer class and the assembly it’s in. (When you don’t want EF to use the initializer, you can set an attribute on the

    context

    element:

    disableDatabaseInitialization="true"

    .) For more information, see Configuration File Settings.

    An alternative to setting the initializer in the Web.config file is to do it in code by adding a


    Database.SetInitializer

    statement to the

    Application_Start

    method in the Global.asax.cs file. For more information, see Understanding Database Initializers in Entity Framework Code First.

The application is now set up so that when you access the database for the first time in a given run of the application, Entity Framework compares the database to the model (your

SchoolContext

and entity classes). If there’s a difference, the application drops and re-creates the database.

Note

When you deploy an application to a production web server, you must remove or disable code that drops and re-creates the database. You’ll do that in a later tutorial in this series.

Asp.net MVC Tutorial for  Beginners  using Visual Studio 2017 with c#
Asp.net MVC Tutorial for Beginners using Visual Studio 2017 with c#

Next steps

In this tutorial, you:

  • Created an MVC web app
  • Set up the site style
  • Installed Entity Framework 6
  • Created the data model
  • Created the database context
  • Initialized DB with test data
  • Set up EF 6 to use LocalDB
  • Created controller and views
  • Viewed the database

Advance to the next article to learn how to review and customize the create, read, update, delete (CRUD) code in your controllers and views.

Create your first app

On the Start page, select New Project. In the New project dialog box, select the Visual C# category on the left, then Web, and then select the ASP.NET Web Application (.NET Framework) project template. Name your project “MvcMovie” and then choose OK.

In the New ASP.NET Web Application dialog, choose MVC and then choose OK.

Visual Studio used a default template for the ASP.NET MVC project you just created, so you have a working application right now without doing anything! This is a simple “Hello World!” project, and it’s a good place to start your application.

Press F5 to start debugging. When you press F5, Visual Studio starts IIS Express and runs your web app. Visual Studio then launches a browser and opens the application’s home page. Notice that the address bar of the browser says

localhost:port#

and not something like

example.com

. That’s because

localhost

always points to your own local computer, which in this case is running the application you just built. When Visual Studio runs a web project, a random port is used for the web server. In the image below, the port number is 1234. When you run the application, you’ll see a different port number.

Right out of the box this default template gives you

Home

,

Contact

, and

About

pages. The image below doesn’t show the Home, About, and Contact links. Depending on the size of your browser window, you might need to click the navigation icon to see these links.

The application also provides support to register and log in. The next step is to change how this application works and learn a little bit about ASP.NET MVC. Close the ASP.NET MVC application and let’s change some code.

For a list of current tutorials, see MVC recommended articles.

Visiual Studio 2017 - Asp.Net MVC 5 - Connect to SQL Server Database - Data and show in a view
Visiual Studio 2017 – Asp.Net MVC 5 – Connect to SQL Server Database – Data and show in a view

Create first simple MVC application

Mở Visual Studio 2017 và chon File menu -> New -> Project :

Tạo một project mới trong VS

Từ hộp thoại New Project, mở rộng Visual C# và chọn Web, sau đó chọn ASP.NET Web Application (.NET Framework) . Nhập tên project

MyMVCApplication

. Chúng ta cũng có thể thay đổi vị trí lưu project bằng cách vào Browse… Cuối cùng, click OK.

Từ hộp thoại New ASP.NET Web Application, chọn MVC:

Chúng ta cũng có thể thay đổi quyền bằng cách click Change Authenticationbutton.

Chọn Loại xác thực

Ở đây, chúng ta đang giữ xác thực mặc định cho ứng dụng. Ứng dụng của tôi là Không xác thực. Nhấn OK để tiếp tục.

Đợi một lúc cho đến khi Visual Studio tạo một project MVC đơn giản bằng cách sử dụng mẫu mặc định như dưới đây.

Bây giờ , nhấn F5 to run một project in debug mode hoặc Ctrl + F5 to run một project không cần deug. Khi chạy nó sẽ mở trang chủ trong trình duyệt.

Proejct MVC 5 đã chứa các tệp JavaScript và CSS bootstrap 3.0 mặc định. Vì vậy, bạn có thể tạo các trang web nhanh. Giao diện người dùng sẽ thay đổi giao diện dựa trên kích thước màn hình của các thiết bị khác nhau. Ví dụ, thanh menu trên cùng sẽ được thay đổi trong các thiết bị di động.

Kết quả trả về trong ứng dụng MVC

Kết quả trả về trong ứng dụng MVC

// HomeController.cs


using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcApplicationDemo.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } } }

// index.cshtml


@{ ViewBag.Title = "Home Page"; }

ASP.NET

ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.


Learn more

Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Tạo 1 project ASP.Net MVC đơn giản và giải thích cấu trúc, vai trò của View, Controller trong mô hình MVC. dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Tự học ASP.NET MVC 5 - Bài 1 - Giới thiệu, tạo project trong Visual Studio, cấu hình IIS
Tự học ASP.NET MVC 5 - Bài 1 - Giới thiệu, tạo project trong Visual Studio, cấu hình IIS

Thiết lập môi trường phát triển

Bạn có thể phát triển ứng dụng ASP.NET MVC với phiên bản Visual Studio và .NET framework thích hợp, như bạn đã thấy trong phần trước của lịch sử phiên bản.

Tại đây, chúng ta sẽ sử dụng MVC v5.2, phiên bản Cộng đồng Visual Studio 2017 và .NET framework 4.6 để tạo ứng dụng MVC đầu tiên của chúng tôi.

Download phiên bản mới nhất Visual Studio https://visualstudio.microsoft.com/downloads.

Set up EF 6 to use LocalDB

LocalDB is a lightweight version of the SQL Server Express database engine. It's easy to install and configure, starts on demand, and runs in user mode. LocalDB runs in a special execution mode of SQL Server Express that enables you to work with databases as .mdf files. You can put LocalDB database files in the App_Data folder of a web project if you want to be able to copy the database with the project. The user instance feature in SQL Server Express also enables you to work with .mdf files, but the user instance feature is deprecated; therefore, LocalDB is recommended for working with .mdf files. LocalDB is installed by default with Visual Studio.

Typically, SQL Server Express is not used for production web applications. LocalDB in particular is not recommended for production use with a web application because it's not designed to work with IIS.

  • In this tutorial, you'll work with LocalDB. Open the application Web.config file and add a


    connectionStrings

    element preceding the

    appSettings

    element, as shown in the following example. (Make sure you update the Web.config file in the root project folder. There's also a Web.config file in the Views subfolder that you don't need to update.)

The connection string you've added specifies that Entity Framework will use a LocalDB database named ContosoUniversity1.mdf. (The database doesn't exist yet but EF will create it.) If you want to create the database in your App_Data folder, you could add

AttachDBFilename=|DataDirectory|\ContosoUniversity1.mdf

to the connection string. For more information about connection strings, see SQL Server Connection Strings for ASP.NET Web Applications.

You don't actually need a connection string in the Web.config file. If you don't supply a connection string, Entity Framework uses a default connection string based on your context class. For more information, see Code First to a New Database.

ASP.NET Core MVC 6.0 Full Course (Beginner)
ASP.NET Core MVC 6.0 Full Course (Beginner)

Getting started with ASP.NET MVC 5

Note

An updated version of this tutorial is available here using the latest version of Visual Studio. The new tutorial uses ASP.NET Core MVC, which provides many improvements over this tutorial.

This tutorial teaches ASP.NET Core MVC with controllers and views. Razor Pages is a new alternative in ASP.NET Core, 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. The Razor Pages tutorial:

  • Is easier to follow.
  • Covers more features.
  • Is the preferred approach for new app development.

This tutorial teaches you the basics of building an ASP.NET MVC 5 web app using Visual Studio 2017. The final source code for the tutorial is located on GitHub.

This tutorial was written by Scott Guthrie (twitter@scottgu ), Scott Hanselman (twitter: @shanselman ), and Rick Anderson ( @RickAndMSFT )

You need an Azure account to deploy this app to Azure:

  • You can open an Azure account for free - You get credits you can use to try out paid Azure services, and even after they're used up you can keep the account and use free Azure services.
  • You can activate MSDN subscriber benefits - Your MSDN subscription gives you credits every month that you can use for paid Azure services.

Web Hosting

You can easily find a web hosting company that offers the right mix of features and price for your applications.


Learn more

Create ASP.NET MVC Application

In this section, we will create a new MVC web application using Visual Studio and understand the basic building blocks of the ASP.NET MVC Application.

We are going to use ASP.NET MVC v5.2, and Visual Studio 2017 community edition, and .NET Framework 4.6 to create our first MVC application.

Download the latest version of Visual Studio from visualstudio.microsoft.com/downloads.

Open Visual Studio 2017 and select File menu -> New -> Project, as shown below.

From the New Project dialog as shown below, expand Visual C# node and select Web in the left pane, and then select ASP.NET Web Application (.NET Framework) in the middle pane.
Enter the name of your project

MyMVCApplication

. (You can give an appropriate name for your application). Also, you can change the location of the MVC application by clicking on Browse.. button. Finally, click OK.

From the New ASP.NET Web Application dialog, select MVC (if not selected already) as shown below.

You can also change the authentication by clicking on Change Authentication button. You can select appropriate authentication mode for your application, as shown below.

Here, we are keeping the default authentication for our application which is No Authentication. Click OK to continue.

Wait for some time till Visual Studio creates a simple MVC project using the default template, as shown below.

Now, press F5 to run the project in debug mode or Ctrl + F5 to run the project without debugging. It will open the home page in the browser, as shown below.

MVC 5 project includes JavaScript and CSS files of bootstrap 3.0 by default. So you can create responsive web pages. This responsive UI will change its look and feel based on the screen size of the different devices. For example, the top menu bar will be changed in the mobile devices, as shown below.

In this way, you can create your ASP.NET MVC 5 application using Visual Studio 2017.

Learn about ASP.NET MVC project’s folder structure in the next section.

Nga \
Nga \”vãi\” tên lửa khắp Ukraine ! – Nâng Tầm Kiến Thức

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Khóa học

Lập trình website với ASP.Net MVC cơ bản

Lập trình website với ASP.Net MVC cơ bản

Đánh giá

Bình luận

Dạ cho em hỏi ạ. Luyện tập thử thách không ngại khó là làm gì ạ?

Thanks Hkteam đã chia sẽ kiến thức mong hkteam ra thêm nhiều clip hay và thực tế

You have to choose “ASP.NET and web development” manually when installing,

https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=vs-2017#step-4—choose-workloads

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

I am using Visual Studio 2017 Professional edition Version 15.3.0.

When I am creating a new Web application project under C# I am not getting MVC or Web API template.

Please suggest how can I get ?

You have to choose “ASP.NET and web development” manually when installing,

https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=vs-2017#step-4—choose-workloads

This page, and choosing ASP.NET and web development, helps me understand /fix an unrelated GitHub question for Visual Studio 2017 https://stackoverflow.com/questions/15636034/how-do-i-open-a-csproj-with-projecttypeguids-349c5851-65df-11da-9384-00065b846f2

Hi @Shyam Kumar , Do you find “ASP.NET Web Application”? If you have it, you need to click it and select mvc or webapi in it. If you don’t have, you need to add “ASP.NET and web development” when you install the VS.

Best regards, Yijing Sun

If the answer is the right solution, please click “Accept Answer” and kindly upvote it. If you have extra questions about this answer, please click “Comment”.

Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

asp.net mvc does not showing. After installing the problem persists. I attached 2 pic Untitled.png Untitled2.png

ASP.NET – MVC – Bắt đầu tạo ứng dụng

Tạo một ứng dụng đầu tiên trong ASP.NET MVC

Trong phần này, chúng tôi sẽ tạo một ứng dụng web MVC mới bằng Visual Studio và hiểu các khối cơ bản của Ứng dụng ASP.NET MVC.

Đầu tiên, thiết lập môi trường phát triển để phát triển ứng dụng ASP.NET MVC 5.

Install Entity Framework 6

  1. From the Tools menu, choose NuGet Package Manager, and then choose Package Manager Console.

  2. In the Package Manager Console window, enter the following command:


    Install-Package EntityFramework

This step is one of a few steps that this tutorial has you do manually, but that could have been done automatically by the ASP.NET MVC scaffolding feature. You’re doing them manually so that you can see the steps required to use Entity Framework (EF). You’ll use scaffolding later to create the MVC controller and views. An alternative is to let scaffolding automatically install the EF NuGet package, create the database context class, and create the connection string. When you’re ready to do it that way, all you have to do is skip those steps and scaffold your MVC controller after you create your entity classes.

5 phút của giáo viên be like (Kenjumboy - Vines)
5 phút của giáo viên be like (Kenjumboy – Vines)

Set up the site style

A few simple changes will set up the site menu, layout, and home page.

  1. Open Views\Shared\_Layout.cshtml, and make the following changes:

    • Change each occurrence of “My ASP.NET Application” and “Application name” to “Contoso University”.
    • Add menu entries for Students, Courses, Instructors, and Departments, and delete the Contact entry.

    The changes are highlighted in the following code snippet:


    <br /> @ViewBag.Title - Contoso University<br />
    @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")

    @Html.ActionLink("Contoso University", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })

    • @Html.ActionLink("Home", "Index", "Home")
    • @Html.ActionLink("About", "About", "Home")
    • @Html.ActionLink("Students", "Index", "Student")
    • @Html.ActionLink("Courses", "Index", "Course")
    • @Html.ActionLink("Instructors", "Index", "Instructor")
    • @Html.ActionLink("Departments", "Index", "Department")
    @RenderBody()

    © @DateTime.Now.Year - Contoso University

    @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false)


  2. In Views\Home\Index.cshtml, replace the contents of the file with the following code to replace the text about ASP.NET and MVC with text about this application:


    @{ ViewBag.Title = "Home Page"; }

    Contoso University

    View the database

    When you ran the Students page and the application tried to access the database, EF discovered that there was no database and created one. EF then ran the seed method to populate the database with data.

    You can use either Server Explorer or SQL Server Object Explorer (SSOX) to view the database in Visual Studio. For this tutorial, you'll use Server Explorer.

    1. Close the browser.

    2. In Server Explorer, expand Data Connections (you may need to select the refresh button first), expand School Context (ContosoUniversity), and then expand Tables to see the tables in your new database.

    3. Right-click the Student table and click Show Table Data to see the columns that were created and the rows that were inserted into the table.

    4. Close the Server Explorer connection.

    The ContosoUniversity1.mdf and .ldf database files are in the %USERPROFILE% folder.

    Because you're using the

    DropCreateDatabaseIfModelChanges

    initializer, you could now make a change to the

    Student

    class, run the application again, and the database would automatically be re-created to match your change. For example, if you add an

    EmailAddress

    property to the

    Student

    class, run the Students page again, and then look at the table again, you'll see a new

    EmailAddress

    column.

    Modern Collapsible/Nested  Side Navigation Menu -  C# VB.NET
    Modern Collapsible/Nested Side Navigation Menu - C# VB.NET

    Conventions

    The amount of code you had to write in order for Entity Framework to be able to create a complete database for you is minimal because of conventions, or assumptions that Entity Framework makes. Some of them have already been noted or were used without your being aware of them:

    • The pluralized forms of entity class names are used as table names.
    • Entity property names are used for column names.
    • Entity properties that are named

      ID

      or classname

      ID

      are recognized as primary key properties.
    • A property is interpreted as a foreign key property if it's named
      (for example,

      StudentID

      for the

      Student

      navigation property since the

      Student

      entity's primary key is

      ID

      ). Foreign key properties can also be named the same simply (for example,

      EnrollmentID

      since the

      Enrollment

      entity's primary key is

      EnrollmentID

      ).

    You've seen that conventions can be overridden. For example, you specified that table names shouldn't be pluralized, and you'll see later how to explicitly mark a property as a foreign key property.

    Kết luận

    Qua bài học ngày hôm nay, các bạn đã hiểu về View, Controller cũng như cách tạo 1 project ASP.Net MVC và tạo 1 ví dụ đơn giản là xuất câu “Hello Howkteam” ra màn hình rồi nhé.

    Bài sau chúng ta sẽ đi vào Tìm hiểu về Layout Page trong View và tạo ví dụ minh họa

    Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

    Create Login Page in Asp.net (MVC 5 & SQL Server)
    Create Login Page in Asp.net (MVC 5 & SQL Server)

    Create an MVC web app

    1. Open Visual Studio and create a C# web project using the ASP.NET Web Application (.NET Framework) template. Name the project ContosoUniversity and select OK.

    2. In New ASP.NET Web Application - ContosoUniversity, select MVC.

      Note

      By default, the Authentication option is set to No Authentication. For this tutorial, the web app doesn't require users to sign in. Also, it doesn't restrict access based on who's signed in.

    3. Select OK to create the project.

    Get started

    Start by installing Visual Studio 2017. Then, open Visual Studio.

    Visual Studio is an IDE, or integrated development environment. Just like you use Microsoft Word to write documents, you'll use an IDE to create applications. In Visual Studio, there's a list along the bottom showing various options available to you. There's also a menu that provides another way to perform tasks in the IDE. For example, instead of selecting New Project on the Start page, you can use the menu bar and select File > New Project.

    CRUD Operation in ASP.NET Core using Visual Studio 2022
    CRUD Operation in ASP.NET Core using Visual Studio 2022

    Tạo ứng dụng đầu tiên

    Để tạo mới một Project, bạn chọn File -> New -> Project như hình bên dưới:

    Sau đó chọn “Visual C#” tại danh sách bên trái, chọn “ASP.NET Web Application (.NET Framework)”. Đặt tên cho Project là “MvcMovie” và chọn đường dẫn lưu Project, sau đó nhấn “OK”:

    Tại màn hình “New ASP.NET Web Application”, chọn “MVC” và nhấn “OK”:

    Visual Studio sẽ sử dụng template mặc định cho dự án ASP.NET MVC vừa được tạo:

    Bạn nhấn phím F5. Visual Studio sẽ khởi động IIS Express Web Server để chạy ứng dụng Web. Visual Studio sau đó sẽ khởi chạy trình duyệt và mở trang chủ của ứng dụng. Thanh địa chỉ của trình duyệt sẽ có dạng: “http://localhost:port#/”. Đó là vì localhost luôn trỏ tới máy tính cục bộ của bạn. Khi Visual Studio chạy một dự án WEB, một cổng ngẫu nhiên sẽ được sử dụng cho máy chủ WEB. Khi chạy ứng dụng chúng ta sẽ thấy những cổng khác nhau. Trong hình dưới đây, số cổng là “50061”:

    Thu nhỏ kích cỡ cửa sổ trình duyệt. Nhấn vào “icon navigation” bạn sẽ thấy đường dẫn đến trang “Home”, “About”, “Contact”.

    Ứng dụng cũng hỗ trợ “Đăng kí” và “Đăng nhập”. Bài học tiếp theo, chúng ta sẽ thay đổi cách ứng dụng này hoạt động và tìm hiểu một chút về ASP.NET MVC.

    Xem thêm các bài chuyên môn tại đây.

    Tutorial: Get Started with Entity Framework 6 Code First using MVC 5

    Note

    For new development, we recommend ASP.NET Core Razor Pages over ASP.NET MVC controllers and views. For a tutorial series similar to this one using Razor Pages, see Tutorial: Get started with Razor Pages in ASP.NET Core. The new tutorial:

    • Is easier to follow.
    • Provides more EF Core best practices.
    • Uses more efficient queries.
    • Is more current with the latest API.
    • Covers more features.
    • Is the preferred approach for new application development.

    In this series of tutorials, you learn how to build an ASP.NET MVC 5 application that uses Entity Framework 6 for data access. This tutorial uses the Code First workflow. For information about how to choose between Code First, Database First, and Model First, see Create a model.

    This tutorial series explains how to build the Contoso University sample application. The sample application is a simple university website. With it, you can view and update student, course, and instructor information. Here are two of the screens you create:

    In this tutorial, you:

    • Create an MVC web app
    • Set up the site style
    • Install Entity Framework 6
    • Create the data model
    • Create the database context
    • Initialize DB with test data
    • Set up EF 6 to use LocalDB
    • Create controller and views
    • View the database

    Create controller and views

    Now you'll create a web page to display data. The process of requesting the data automatically triggers the creation of the database. You'll begin by creating a new controller. But before you do that, build the project to make the model and context classes available to MVC controller scaffolding.

    1. Right-click the Controllers folder in Solution Explorer, select Add, and then click New Scaffolded Item.

    2. In the Add Scaffold dialog box, select MVC 5 Controller with views, using Entity Framework, and then choose Add.

    3. In the Add Controller dialog box, make the following selections, and then choose Add:

      • Model class: Student (ContosoUniversity.Models). (If you don't see this option in the drop-down list, build the project and try again.)

      • Data context class: SchoolContext (ContosoUniversity.DAL).

      • Controller name: StudentController (not StudentsController).

      • Leave the default values for the other fields.

        When you click Add, the scaffolder creates a StudentController.cs file and a set of views (.cshtml files) that work with the controller. In the future when you create projects that use Entity Framework, you can also take advantage of some additional functionality of the scaffolder: create your first model class, don't create a connection string, and then in the Add Controller box specify New data context by selecting the + button next to Data context class. The scaffolder will create your


        DbContext

        class and your connection string as well as the controller and views.

    4. Visual Studio opens the Controllers\StudentController.cs file. You see that a class variable has been created that instantiates a database context object:


      private SchoolContext db = new SchoolContext();

      The


      Index

      action method gets a list of students from the Students entity set by reading the

      Students

      property of the database context instance:

      public ViewResult Index() { return View(db.Students.ToList()); }

      The Student\Index.cshtml view displays this list in a table:

      @foreach (var item in Model) {

      }

      @Html.DisplayNameFor(model => model.LastName) @Html.DisplayNameFor(model => model.FirstMidName) @Html.DisplayNameFor(model => model.EnrollmentDate)
      @Html.DisplayFor(modelItem => item.LastName) @Html.DisplayFor(modelItem => item.FirstMidName) @Html.DisplayFor(modelItem => item.EnrollmentDate) @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | @Html.ActionLink("Details", "Details", new { id=item.ID }) | @Html.ActionLink("Delete", "Delete", new { id=item.ID })

    5. Press Ctrl+F5 to run the project. (If you get a "Cannot create Shadow Copy" error, close the browser and try again.)

      Click the Students tab to see the test data that the


      Seed

      method inserted. Depending on how narrow your browser window is, you'll see the Student tab link in the top address bar or you'll have to click the upper right corner to see the link.

    VB Guide 24 - Designing modern UI with animated sliding menu - Visual Basic net
    VB Guide 24 - Designing modern UI with animated sliding menu - Visual Basic net

    Create the database context

    The main class that coordinates Entity Framework functionality for a given data model is the database context class. You create this class by deriving from the System.Data.Entity.DbContext class. In your code, you specify which entities are included in the data model. You can also customize certain Entity Framework behavior. In this project, the class is named

    SchoolContext

    .

    • To create a folder in the ContosoUniversity project, right-click the project in Solution Explorer and click Add, and then click New Folder. Name the new folder DAL (for Data Access Layer). In that folder, create a new class file named SchoolContext.cs, and replace the template code with the following code:


      using ContosoUniversity.Models; using System.Data.Entity; using System.Data.Entity.ModelConfiguration.Conventions; namespace ContosoUniversity.DAL { public class SchoolContext : DbContext { public SchoolContext() : base("SchoolContext") { } public DbSet

      Students { get; set; } public DbSet

      Enrollments { get; set; } public DbSet

      Courses { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove (); } } }



    Specify entity sets

    This code creates a DbSet property for each entity set. In Entity Framework terminology, an entity set typically corresponds to a database table, and an entity corresponds to a row in the table.

    Note

    You can omit the

    DbSet

    and

    DbSet

    statements and it would work the same. Entity Framework would include them implicitly because the

    Student

    entity references the

    Enrollment

    entity and the

    Enrollment

    entity references the

    Course

    entity.

    Specify the connection string

    The name of the connection string (which you'll add to the Web.config file later) is passed in to the constructor.


    public SchoolContext() : base("SchoolContext") { }

    You could also pass in the connection string itself instead of the name of one that is stored in the Web.config file. For more information about options for specifying the database to use, see Connection strings and models.

    If you don't specify a connection string or the name of one explicitly, Entity Framework assumes that the connection string name is the same as the class name. The default connection string name in this example would then be

    SchoolContext

    , the same as what you're specifying explicitly.

    Specify singular table names

    The

    modelBuilder.Conventions.Remove

    statement in the OnModelCreating method prevents table names from being pluralized. If you didn't do this, the generated tables in the database would be named

    Students

    ,

    Courses

    , and

    Enrollments

    . Instead, the table names will be

    Student

    ,

    Course

    , and

    Enrollment

    . Developers disagree about whether table names should be pluralized or not. This tutorial uses the singular form, but the important point is that you can select whichever form you prefer by including or omitting this line of code.

    Create the data model

    Next you'll create entity classes for the Contoso University application. You'll start with the following three entities:

    Course <-> Enrollment <-> Student

    Entities Relationship
    Course to Enrollment One-to-many
    Student to Enrollment One-to-many

    There's a one-to-many relationship between

    Student

    and

    Enrollment

    entities, and there's a one-to-many relationship between

    Course

    and

    Enrollment

    entities. In other words, a student can be enrolled in any number of courses, and a course can have any number of students enrolled in it.

    In the following sections, you'll create a class for each one of these entities.

    Note

    If you try to compile the project before you finish creating all of these entity classes, you'll get compiler errors.

    The Student entity

    • In the Models folder, create a class file named Student.cs by right-clicking on the folder in Solution Explorer and choosing Add > Class. Replace the template code with the following code:


      using System; using System.Collections.Generic; namespace ContosoUniversity.Models { public class Student { public int ID { get; set; } public string LastName { get; set; } public string FirstMidName { get; set; } public DateTime EnrollmentDate { get; set; } public virtual ICollection

      Enrollments { get; set; } } }

    The

    ID

    property will become the primary key column of the database table that corresponds to this class. By default, Entity Framework interprets a property that's named

    ID

    or classname

    ID

    as the primary key.

    The

    Enrollments

    property is a navigation property. Navigation properties hold other entities that are related to this entity. In this case, the

    Enrollments

    property of a

    Student

    entity will hold all of the

    Enrollment

    entities that are related to that

    Student

    entity. In other words, if a given

    Student

    row in the database has two related

    Enrollment

    rows (rows that contain that student's primary key value in their

    StudentID

    foreign key column), that

    Student

    entity's

    Enrollments

    navigation property will contain those two

    Enrollment

    entities.

    Navigation properties are typically defined as

    virtual

    so that they can take advantage of certain Entity Framework functionality such as lazy loading. (Lazy loading will be explained later, in the Reading Related Data tutorial later in this series.)

    If a navigation property can hold multiple entities (as in many-to-many or one-to-many relationships), its type must be a list in which entries can be added, deleted, and updated, such as

    ICollection

    .

    The Enrollment entity

    • In the Models folder, create Enrollment.cs and replace the existing code with the following code:


      namespace ContosoUniversity.Models { public enum Grade { A, B, C, D, F } public class Enrollment { public int EnrollmentID { get; set; } public int CourseID { get; set; } public int StudentID { get; set; } public Grade? Grade { get; set; } public virtual Course Course { get; set; } public virtual Student Student { get; set; } } }

    The

    EnrollmentID

    property will be the primary key; this entity uses the classname

    ID

    pattern instead of

    ID

    by itself as you saw in the

    Student

    entity. Ordinarily you would choose one pattern and use it throughout your data model. Here, the variation illustrates that you can use either pattern. In a later tutorial, you'll see how using

    ID

    without

    classname

    makes it easier to implement inheritance in the data model.

    The

    Grade

    property is an enum. The question mark after the

    Grade

    type declaration indicates that the

    Grade

    property is nullable. A grade that's null is different from a zero grade — null means a grade isn't known or hasn't been assigned yet.

    The

    StudentID

    property is a foreign key, and the corresponding navigation property is

    Student

    . An

    Enrollment

    entity is associated with one

    Student

    entity, so the property can only hold a single

    Student

    entity (unlike the

    Student.Enrollments

    navigation property you saw earlier, which can hold multiple

    Enrollment

    entities).

    The

    CourseID

    property is a foreign key, and the corresponding navigation property is

    Course

    . An

    Enrollment

    entity is associated with one

    Course

    entity.

    Entity Framework interprets a property as a foreign key property if it's named
    (for example,

    StudentID

    for the

    Student

    navigation property since the

    Student

    entity's primary key is

    ID

    ). Foreign key properties can also be named the same simply (for example,

    CourseID

    since the

    Course

    entity's primary key is

    CourseID

    ).

    The Course entity

    • In the Models folder, create Course.cs, replacing the template code with the following code:


      using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace ContosoUniversity.Models { public class Course { [DatabaseGenerated(DatabaseGeneratedOption.None)] public int CourseID { get; set; } public string Title { get; set; } public int Credits { get; set; } public virtual ICollection

      Enrollments { get; set; } } }

    The

    Enrollments

    property is a navigation property. A

    Course

    entity can be related to any number of

    Enrollment

    entities.

    We'll say more about the DatabaseGeneratedAttribute attribute in a later tutorial in this series. Basically, this attribute lets you enter the primary key for the course rather than having the database generate it.

    Visual Studio 2019 Installation and Creation of MVC project
    Visual Studio 2019 Installation and Creation of MVC project

    Keywords searched by users: mvc 5 visual studio 2017

    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Asp.Net Mvc 5 Hello World
    Asp.Net Mvc 5 Hello World
    Lab 03 - View In Asp.Net Mvc 5 - Bài 3.1 | Devmaster
    Lab 03 - View In Asp.Net Mvc 5 - Bài 3.1 | Devmaster
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 |  Microsoft Learn
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Asp.Net Mvc 5 Hello World
    Asp.Net Mvc 5 Hello World
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 |  Microsoft Learn
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Getting Started With Asp.Net Mvc 5 | Microsoft Learn
    Asp.Net Mvc5 #1: Bắt Đầu Với Asp.Net Mvc 5 | Codegym Chia Sẻ
    Asp.Net Mvc5 #1: Bắt Đầu Với Asp.Net Mvc 5 | Codegym Chia Sẻ
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 |  Microsoft Learn
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 | Microsoft Learn
    Visual Studio 2017 - Mvc Core - Part 01 - Hello World - Youtube
    Visual Studio 2017 - Mvc Core - Part 01 - Hello World - Youtube
    Asp.Net Mvc 5 Hello World
    Asp.Net Mvc 5 Hello World
    Mvc 5 On Visual Studio 2017 - Youtube
    Mvc 5 On Visual Studio 2017 - Youtube
    Asp.Net Mvc] Phần 2: Tạo Website Asp.Net Mvc Đầu Tiên | Dammio
    Asp.Net Mvc] Phần 2: Tạo Website Asp.Net Mvc Đầu Tiên | Dammio
    Asp.Net Mvc 5 Crud Tutorial With Example For Beginners
    Asp.Net Mvc 5 Crud Tutorial With Example For Beginners
    Mua Mvc 5 Desde Cero: Guía Paso A Paso Usando C# Y Visual Studio 2017  (Spanish Edition) Trên Amazon Mỹ Chính Hãng 2024 | Giaonhan247
    Mua Mvc 5 Desde Cero: Guía Paso A Paso Usando C# Y Visual Studio 2017 (Spanish Edition) Trên Amazon Mỹ Chính Hãng 2024 | Giaonhan247
    Tutorial: Get Started With Ef Database First Using Mvc 5 | Microsoft Learn
    Tutorial: Get Started With Ef Database First Using Mvc 5 | Microsoft Learn
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 |  Microsoft Learn
    Tutorial: Get Started With Entity Framework 6 Code First Using Mvc 5 | Microsoft Learn
    Asp.Net Mvc5 #1: Bắt Đầu Với Asp.Net Mvc 5 | Codegym Chia Sẻ
    Asp.Net Mvc5 #1: Bắt Đầu Với Asp.Net Mvc 5 | Codegym Chia Sẻ
    Asp.Net Mvc - Lab01 - Giới Thiệu Về Asp.Net Mvc 5
    Asp.Net Mvc - Lab01 - Giới Thiệu Về Asp.Net Mvc 5
    Learn To Upgrade From Asp.Net Mvc And Web Api To Asp.Net Core Mvc |  Microsoft Learn
    Learn To Upgrade From Asp.Net Mvc And Web Api To Asp.Net Core Mvc | Microsoft Learn
    Angular 5 With Asp.Net Mvc, Web Api In Visual Studio 2017 - Youtube
    Angular 5 With Asp.Net Mvc, Web Api In Visual Studio 2017 - Youtube
    Asp.Net Mvc 5 Install Bootstrap
    Asp.Net Mvc 5 Install Bootstrap

    See more here: kientrucannam.vn

Leave a Reply

Your email address will not be published. Required fields are marked *