Chèn dữ liệu mvc php

Trong bài viết này, bạn sẽ tạo một lớp LinkController mới và viết mã để lấy dữ liệu từ bảng Liên kết trong cơ sở dữ liệu và hiển thị trình duyệt duyệt sử dụng một bản xem mẫu (view template)

Tiếp tục theo ứng dụng ở bài trước, để tạo 1 Bộ điều khiển mới, trong Solution Explorer, chuột phải chọn thư mục Bộ điều khiển và nhấn Thêm, sau đó chọn Bộ điều khiển

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Tại hộp thoại Add Scaffold, chọn mục MVC 5 Controller with views (điều khiển MVC 5 với các view), sử dụng Entity Framework và nhấn Add

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Sau đó, đối với Controller name, select name is LinkController. Chọn Liên kết (DammioMVC. Models) cho Layer Link và chọn DammioMVCEntities (DammioMVC. Models) for layer context Data. Tiếp theo, nhấn Thêm, Visual Studio sẽ tạo các tệp và thư mục. Bạn có thể sử dụng Layout mặc định nếu muốn (~/Views/Shared/_Layout. cshtml)

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Sau đó, hãy đợi một chút, Visual Studio sẽ tự động tạo mã nguồn cho tệp LinkController. cs trong thư mục Bộ điều khiển và tạo thư mục Lượt xem/Liên kết chứa các tệp Tạo. cshtml, Xóa. cshtml, Chi tiết. cshtml, Chỉnh sửa. cshtml, and Index. cshtml. Bạn có thể bật cửa sổ Solution Explorer (Ctrl + Alt + L) để xem tổng số các tập tin mới tạo

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Visual Studio sẽ tự động tạo các phương thức CRUD (tạo, đọc, cập nhật và xóa) và kèm theo giao diện (lượt xem) vì vậy với ASP. NET MVC, bạn có thể thực hiện giao diện trang Admin rất nhanh

Sau khi tạo xong LinkController, bạn chạy dự án web với đường dẫn http. //máy chủ cục bộ. xxxx/Link/ để mở giao diện quản lý bảng Liên kết mặc định. Không có phương thức nào được mô tả, vì vậy máy chủ sẽ chạy phương thức Index được mô tả trong App_Start/RouteConfig. cs, you can see http. //máy chủ cục bộ. xxxx/Link/ http tương đương. //máy chủ cục bộ. xxxx/Liên kết/Chỉ mục

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Tạo một liên kết mới

To create a new Link, in the http interface. //máy chủ cục bộ. xxxx/Link/, bạn chọn liên kết Tạo mới, sau đó trang http. //máy chủ cục bộ. xxxx/Link/Create sẽ hiển thị, bạn điền thông tin và thêm mới 1 Liên kết

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Sau khi điền thông tin, bạn nhấn nút Tạo để gửi dữ liệu về máy chủ, nếu tạo thành công thì trang sẽ Chuyển hướng về trang Chỉ mục với đường dẫn http. //máy chủ cục bộ. xxxx/Link/ có chứa một dòng Liên kết mới tạo

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Với Liên kết mới tạo, bạn đã thấy các liên kết Chỉnh sửa (chỉnh sửa), Chi tiết (xem chi tiết) và Xóa (xóa), bạn có thể thử các thao tác này để biết các chức năng giao diện khác mà Visual Studio đã tạo

Attempt insert HTML code

You try to create 1 Link new at http. //máy chủ cục bộ. xxxx/Link/Create, sau đó chúng ta thử chèn đoạn JavaScript nhỏ để xem ASP. NET MVC có khả năng bảo mật không?

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Sau đó nhấn nút Tạo, bạn sẽ thấy lỗi xuất hiện để chèn mã HTML vào cơ sở dữ liệu

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Kiểm tra mã nguồn

Bộ điều khiển liên kết. cs

Đến đây, bạn mở xem nội dung tập tin Controllers\LinkController. cs, method Index wasgieo ra với đoạn mã như sau

public class LinkController : Controller
    {
        private DammioMVCEntities db = new DammioMVCEntities();

        // GET: /Link/
        public ActionResult Index()
        {
            return View(db.Links.ToList());
        }
...
}

Trong phương thức Index, bạn có thể thấy phương thức Index có giá trị trả về là View(db. liên kết. ToList()), tức là danh sách các Liên kết trong bảng Liên kết trong cơ sở dữ liệu. Trong đó, db là 1 biến DbContext, db. Links is table Link, db. liên kết. ToList() is return table Liên kết về một kiểu danh sách List

Bạn có thể xem thêm đoạn riêng DammioMVCEntities db = new DammioMVCEntities();

Trong các bài viết trước, bạn đã học được cách một bộ điều khiển dữ liệu hoặc các đối tượng về bản xem mẫu (view template) bằng các đối tượng ViewBag. Xin giải thích thêm ViewBag là một đối tượng cung cấp cách thức ràng buộc thuận tiện để cung cấp thông tin cho một chế độ xem bất kỳ

Continue at Controllers\LinkController file. cs, nhưng bạn hãy xem phương thức Chi tiết được trồng sẵn như sau

// GET: /Link/Details/1
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Link link = db.Links.Find(id);
            if (link == null)
            {
                return HttpNotFound();
            }
            return View(link);
        }

Phương thức Chi tiết sử dụng để hiển thị nội dung chi tiết của 1 Liên kết nào đó. Phương thức Chi tiết sử dụng chỉ số id để dò LinkID trong bảng Liên kết. Ví dụ http. //máy chủ cục bộ. xxxx/link/details/1 có nghĩa là hiển thị thông tin Liên kết chỉ có số LinkID = 1, nếu không tìm thấy thì sẽ hiển thị trống. Trong hình sau, bạn có thể xem đường dẫn nội dung http. //máy chủ cục bộ. xxxx/link/chi tiết/1

Chèn dữ liệu mvc php
Chèn dữ liệu mvc php

Ngoài lề 1 tý, kiểu int?

int i1 = 1; //OK
int i2 = null; //not OK
int? i3 = 1; //OK
int? i4 = null; //OK, int? cho phép biến bằng null

Nếu một liên kết được tìm thấy theo số id duy nhất, một mô hình liên kết có thể được hiển thị được đưa vào Chế độ xem bằng dòng trả về Chế độ xem(liên kết)

Lượt xem\Liên kết\Chi tiết. cshtml

Tiếp theo, bạn mở tệp Views\Link\Details. cshtml để xem nội dung chứa gì

@model DammioMVC.Models.Link

@{
    ViewBag.Title = "Details";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Details</h2>

<div>
    <h4>Link</h4>
	<hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.LinkName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.LinkName)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.LinkURL)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.LinkURL)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.LinkDescription)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.LinkDescription)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.CategoryID)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.CategoryID)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.LinkID }) |
    @Html.ActionLink("Back to List", "Index")
</p>

Đầu tiên, bạn thấy mệnh đề @model ở đầu trang mô tả các đối tượng mà View cần hiển thị. Trong ví dụ này, đối tượng cần hiển thị là 1 Liên kết với đoạn mã @model DammioMVC. người mẫu. Liên kết phía trên. Một số cú pháp khác nhau như @Html. Liên kết hành động, @Html. DisplayFor,… là cú pháp Razor mà bạn cần học ở ASP. NET MVC. Mục đích của cú pháp Razor giúp bạn rút gọn mã HTML khi thiết lập trình

Chỉ thị @model cho phép bạn truy cập một Liên kết mà bộ điều khiển đưa ra Xem sử dụng một đối tượng có kiểu mạnh Model. Ví dụ trên, trong bản mẫu Chi tiết. cshtml, đoạn mã hỗ trợ mỗi trường Liên kết với các Trình trợ giúp HTML là DisplayNameFor và DisplayFor với Mô hình giả dối kiểu mạnh. Các phương thức Tạo và Chỉnh sửa và các mẫu Xem cũng đưa ra một đối tượng mô hình Liên kết tương tự

Lượt xem/Liên kết/Chỉ mục. cshtml & method Index in LinkController file. cs

Tiếp theo bạn mở tệp Index nội dung. cshtml and index index in LinkController file. cs ra xem

Phương thức Index as after

public ActionResult Index()
{
    return View(db.Movies.ToList());
}

Phương thức này trả về danh sách Liên kết trong cơ sở dữ liệu bằng cú pháp View(db. Phim. Liệt kê())

Tiếp theo, nội dung tệp Index. cshmtl as after

@model IEnumerable<DammioMVC.Models.Link>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.LinkName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.LinkURL)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.LinkDescription)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.CategoryID)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.LinkName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.LinkURL)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.LinkDescription)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CategoryID)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.LinkID }) |
            @Html.ActionLink("Details", "Details", new { id=item.LinkID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.LinkID })
        </td>
    </tr>
}

</table>

Tương tự như tập tin Chi tiết. cshtml, bạn cũng thấy nội dung của tập tin Index. cshtml có chứa chỉ @model mô tả đối tượng DammioMVC. người mẫu. liên kết. Bởi vì đối tượng Model là một kiểu mạnh, vì vậy mỗi đối tượng trong vòng lặp (@foreach) được đánh kiểu là Liên kết và lần lượt hiển thị các thông tin của các Liên kết

Làm việc với SQL Server LocalDB

Nếu bạn sử dụng Entity Framework theo kiểu Code First, khi dò tìm kết nối cơ sở dữ liệu mà trỏ về một cơ sở dữ liệu chưa tồn tại, khi đó Code First sẽ tạo cơ sở dữ liệu này tự động. Điều quan trọng là bạn phải tìm được cơ sở dữ liệu này ở đâu. Thông thường, bạn mở thư mục App_Data để xem có tệp *. mdf nào không, nếu không thì làm mới thư mục thử lại. Nếu bạn sử dụng các phương thức khác để tạo EF như DatabaseFirst, ModelFirst, hãy thử tìm trong Web. config xem đường dẫn đến cơ sở dữ liệu máy chủ

Ví dụ, dự án DammioMVC có đường dẫn cơ sở dữ liệu trong Web file. config as after

<add name="DammioMVCEntities" connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local);initial catalog=DammioMVC;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

Nhìn vào đoạn mã trên, bạn có thể thấy cơ sở dữ liệu máy chủ là (cục bộ), tức là máy chủ mặc định, với tên cơ sở dữ liệu là DammioMVC

Kết luận

Bài viết đã hướng dẫn bạn cách tạo Controller và Views để thực hiện các thao tác xem, xóa, sửa, cập nhật tương ứng với 1 bảng trong cơ sở dữ liệu. Tất cả các bước này đều do Visual Studio gieo mã nguồn cho bạn, rất tiện phải không nào. Việc cần làm là bạn cần tìm hiểu cấu trúc của các tập tin này. Do đó, mời bạn theo dõi bài viết tiếp theo để có thể hiểu rõ hơn về ASP. NET MVC