1. Trang chủ
  2. » Công Nghệ Thông Tin

21 chuong 21

37 36 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,1 MB

Nội dung

CHAPTER 21 Phương thức trợ giúp Trong chương này, xem phương thức trợ giúp, mà cho phép bạn đóng gói lên khúc mã đánh dấu điều họ tái sử dụng xuyên suốt ứng dụng Framework MVC Tôi khởi động cho thấy bạn cách mà tạo phương thức trợ giúp riêng bạn MVC Framework đến với phạm vi rộng phương thức trợ giúp tích hợp, tơi khảo sát chúng chương hai chương tiếp theo, khởi động với phương thức trợ giúp điều bạn sử dụng tạo form HTML, đầu vào phần tử lựa chọn 21-1 bàn cung cấp tóm tắt dành cho chương Table 21-1 Bản tóm tắt chương Chuẩn bị dự án nghiên cứu Dành cho chương này, tạo dự án MVC Visual Studio HelperMethods có tên gọi sử dụng Template Empty, kiểm tra tùy chọn thêm thư mục tham chiếu MVC cốt lõi Tôi thêm người kiểm sốt Home, mà bạn thấy Listing 21-1 Listing 21-1 Nội dung HomeController.cs File using System.Web.Mvc; namespace HelperMethods.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.Fruits = new string[] {"Apple", "Orange", "Pear"}; ViewBag.Cities = new string[] { "New York", "London", "Paris" }; string message = "This is an HTML element: "; return View((object)message); } } } Trong phương thức hành động Index, truyền cặp mảng chuỗi đến xem qua xem túi giấy thiết lập đối tượng mơ hình chuỗi Tơi thêm xem Index.cshtml có tên gọi đến Views/Home folder Bạn thấy nội dung File xem Listing 21-2 Điều xem định kiểu mạnh mẽ (nơi mà kiểu mơ hình chuỗi) không sử dụng cách bố trí Listing 21-2 Nội dung Index.cshtml File Thiết lập Start URL Tôi muốn Visual Studio khởi động với URL gốc dành cho ứng dụng thay đốn URL dựa File mà chỉnh sửa HelperMethods Properties lựa chọn từ menu Project Visual Studio, chuyển sang đến Web tab kiểm tra tùy chọn Page Specific phần Action Start Bạn khơng có cung cấp giá trị Chỉ kiểm tra tùy chọn đủ Kiểm tra ứng dụng ví dụ Bạn thấy cách mà xem trả khởi động ứng dụng Cấu hình gửi mặc định thêm đến dự án Visual Studio ánh xạ URL gốc yêu cầu tự động browser đến hành động Index người kiểm sốt Home, giống minh họa 21-1 hình Tạo phương thức trợ giúp tùy chỉnh Tôi theo mơ hình tơi thiết lập vài chương sau giới thiệu bạn đến phương thức trợ giúp tạo thực thi tùy chỉnh riêng Trong phần mà theo, cho thấy bạn hai kỹ thuật khác dành cho tạo phương thức trợ giúp tùy chỉnh Tạo phương thức trợ giúp Inline loại phương thức trợ giúp đơn giản người giúp đỡ nội dòng, mà định nghĩa xem Tơi tạo người giúp đỡ nội dòng đơn giản hố xem ví dụ sử dụng thẻ @helper, giống minh họa Listing 21-3 Listing 21-3 Tạo phương thức trợ giúp Inline Index.cshtml File Các người giúp đỡ nội dòng có tên tham số tương tự đến phương thức C# thường xun Trong ví dụ, tơi định nghĩa người giúp đỡ gọi ListArrayItems, mà (nó) lấy mảng chuỗi giống tham số Mặc dù người giúp đỡ nội dòng giống phương thức, khơng có giá trị trở lại Nội dung phần thân người giúp đỡ xử lý đặt phản ứng đến trình khách TIP: hú ý điều tơi khơng có gán thuộc tính động từ ViewBag treo mảng (việc) sử dụng người giúp đỡ nội dòng Một đẹp tính loại phương thức trợ giúp hạnh phúc đánh giá kiểu runtime phần thân người giúp đỡ nội dòng theo cú pháp giống phần lại xem Razor Các chuỗi nghĩa đen đánh giá giống HTML tĩnh, câu lệnh mà đòi hỏi (sự) chế biến Razor bắt đầu với ký tự @ Người giúp đỡ ví dụ trộn HTML tĩnh thẻ Razor liệt kê mục mảng, mà (nó) tạo đầu giống (sự) xem gốc giảm lượng lại (sự) xem Lợi ích cách tiếp cận tơi có làm thay đổi muốn thay đổi cách mà nội dung mảng hiển thị Giống ví dụ đơn giản, Listing 21-4 bạn thấy cách mà chuyển sang từ viết giá trị sử dụng HTML phần tử danh sách đếm Listing 21-4 Thay đổi Contents phương thức trợ giúp Index.cshtml File Tôi có làm thay đổi vị trí, mà lợi vặt vãnh dự án đơn giản, điều chiều hữu ích giữ việc xem bạn đơn giản quán dự án thật Bạn thấy kết thay đổi Figure 21-2 Figure 21-2 Thay đổi đánh dấu phương thức trợ giúp TIP: ý điều tơi có khóa foreach với @ ví dụ khơng Listing 21-4 Điều phần tử phần thân người giúp đỡ thay đổi trở thành phần tử HTML, mà có nghĩa tơi có sử dụng @ nói Razor điều tơi sử dụng Câu lệnh C# Trong ví dụ trước khơng phần tử HTML, Razor giả định nội dung mã Nó khó theo dõi thói quen này, Visual Studio đánh dấu lên lỗi điều dành cho bạn Tạo phương thức trợ giúp External Các người giúp đỡ nội dòng thuận lợi, họ sử dụng từ xem họ khai báo và, họ phức tạp, họ lấy xem làm khó đến việc đọc Thay đến tạo phương thức trợ giúp HTML ngồi, mà trình bày giống phương thức mở rộng C# Các phương thức trợ giúp ngồi sử dụng thêm phổ biến, thêm gây bối rối viết, C# khơng tự nhiên xử lý hệ phần tử HTML lịch Chứng minh tính này, tơi thêm thư mục Infrastructure đến dự án ví dụ tạo File lớp CustomHelpers.cs Bạn thấy nội dung File Listing 21-5 Listing 21-5 Nội dung CustomHelpers.cs File Phương thức trợ giúp tạo thực hàm giống người giúp đỡ nội dòng ví dụ trước Nó lấy mảng chuỗi tạo phần tử ul HTML, chứa phần tử li dành cho chuỗi mảng Tham số đến phương thức trợ giúp đối tượng HtmlHelper, bắt đầu với từ khóa nói trình biên dịch C# điều tơi định nghĩa phương thức mở rộng HtmlHelper cung cấp truy xuất đến thông tin mà hữu ích tạo nội dung, qua thuộc tính mơ tả bảng 21-2 Table 21-2 Các tài sản hữu ích định nghĩa HtmlHelper Class Thuộc tính ViewContext hầu hết hữu ích bạn muốn tạo nội dung mà (nó) điều chỉnh đến yêu cầu xử lý Trong bảng 21-3, mô tả vài hầu hết sử dụng (một cách) thơng thường thuộc tính định nghĩa lớp ViewContext Table 21-3 Các tài sản hữu ích định nghĩa ViewContext Class Thơng tin bạn nhận yêu cầu toàn diện khá, hầu hết phương thức trợ giúp đơn giản dùng để giữ định dạng quán Bạn sử dụng phương thức trợ giúp tích hợp dành cho tạo nội dung cụ thể requests (tôi mô tả người giúp đỡ sau chương) bạn sử dụng xem hành động riêng phần dành cho thêm tác vụ phức tạp (tôi cung cấp hướng dẫn cách tiếp cận sử dụng phần chương tiếp theo) Tôi không cần thông tin yêu cầu người giúp đỡ ví dụ, tơi làm cần xây dựng vài thành phần HTML Chiều dễ dàng tạo HTML phương thức trợ giúp sử dụng lớp TagBuilder, mà cho phép bạn xây dựng lên chuỗi HTML không cần cần chia với tất thoát khỏi ký tự đặc biệt Lớp TagBuilder phẩn Assembly System.Web.WebPages.Mvc sử dụng tính forwarding kiểu có tên gọi xuất giống phẩn Assembly System.Web.Mvc Cả hai assembly thêm đến dự án MVC Visual Studio, bạn sử dụng lớp TagBuilder dễ dàng đủ, khơng xuất Microsoft Developer Network (MSDN) tài liệu API Tôi tạo instance TagBuilder mới, trôi qua đặt tên phần tử HTML muốn xây dựng giống tham số phương thức tạo Tôi không cần sử dụng dấu ngoặc góc ( >và >) với lớp TagBuilder, mà có nghĩa tơi tạo phần tử ul, này: Các thành viên lớp TagBuilder hữu ích mô tả bảng 21-4 Table 21-4 Một vài thành viên TagBuilder Class Kết phương thức trợ giúp HTML đối tượng MvcHtmlString, nội dung mà viết trực tiếp phản ứng đến trình khách Dành cho người giúp đỡ ví dụ, tơi truyền kết phương thức TagBuilder.ToString đến phương thức tạo đối tượng MvcHtmlString mới, điều này: Câu lệnh tạo đoạn HTML mà chứa ul phần tử li trả chúng đến máy xem điều chèn phản ứng Sử dụng phương thức trợ giúp External Custom Sử dụng phương thức trợ giúp tùy chỉnh khác sử dụng nội dòng Trong listing 21-6, bạn thấy thay đổi làm đến /Views/Home/Index.cshtml thay người giúp đỡ nội dòng với (thuộc) ngồi Listing 21-6 Sử dụng phương thức trợ giúp External Custom Index.cshtml File Tôi cần bảo đảm namespace mà chứa phương thức mở rộng người giúp đỡ phạm vi Tôi làm điều sử dụng thẻ @using, bạn phát triển nhiều người giúp đỡ tùy chỉnh bạn muốn thêm namespace mà chứa chúng đến /Views/Web.config file điều họ ln sẵn có việc xem bạn Tôi tham chiếu đến người giúp đỡ sử dụng @Html., nơi mà tên phương thức mở rộng Trong trường hợp này, sử dụng @Html.ListArrayItems Phần Html biểu thức tham chiếu đến thuộc tính định nghĩa lớp sở xem, mà trả đối tượng HtmlHelper, mà kiểu đến mà áp dụng phương thức mở rộng Listing 21-5 Tôi truyền liệu đến phương thức trợ giúp giống dành cho người giúp đỡ nội dòng phương thức C#, tơi phải quan tâm đến gán từ thuộc tính đối tượng ViewBag động đến kiểu định nghĩa người giúp đỡ (trong điều trường hợp mảng chuỗi) Cú pháp không giống hấp dẫn giống sử dụng người giúp đỡ nội dòng, phẩn giá điều bạn phải trả tiền tạo người giúp đỡ mà sử dụng xem dự án bạn Biết cách sử dụng phương thức trợ giúp Bây điều bạn thấy cách mà phương thức trợ giúp làm việc, bạn tự hỏi bạn nên sử dụng chúng ưu tiên đến xem hành động riêng phần, giống có chồng lên tính có khả Tôi sử dụng phương thức trợ giúp giảm lượng lại xem, giống làm ví dụ này, dành cho đơn giản nội dung Dành cho thêm khu liên hợp đánh dấu nội dung sử dụng xem riêng phần sử dụng hành động cần thực thao tác liệu mơ hình Tơi đề nghị bạn theo vật tương tự tiếp cận giữ bạn sử dụng phương thức trợ giúp giống đơn giản giống (nếu người giúp đỡ chứa nhúm câu lệnh C# — thêm câu lệnh C# mà phần tử HTML — tơi có xu hướng chuyển sang đến hành động con.) Quản lý chuỗi mã hoá phương thức trợ giúp MVC Framework làm nổ lực bảo vệ bạn từ liệu độc hại mã hoá tự động điều thêm đến trang HTML an tồn Bạn thấy ví dụ điều người kiểm sốt Home ứng dụng ví dụ nơi mà tơi truyền tiềm 559 chuỗi quấy rầy đến xem giống đối tượng mơ hình, giống minh họa Listing 21-7 Listing 21-7 Nội dung HomeController.cs File Đối tượng mơ hình chứa phần tử HTML hợp lệ, giá trị trả Razor, HTML theo tạo ra: Điều phòng ngừa bảo mật mà ngăn chặn giá trị liệu từ thông dịch giống hợp lệ đánh dấu browser Điều sở dành cho form đòn cơng thơng dụng người dùng độc hại cố gắng đến ngầm phá hoại hành vi ứng dụng cố gắng thêm HTML riêng chúng đánh dấu mã JavaScript Dao cạo mã hoá giá trị liệu tự động họ sử dụng xem, phương thức trợ giúp cần có khả tạo HTML Giống hậu quả, họ cung cấp cấp độ tin cậy cao máy xem, điều đòi hỏi vài ý cẩn thận Tìm hiểu vấn đề Chứng minh vấn đề, tạo phương thức trợ giúp lớp Custom Helpers, giống minh họa Listing 21-8 Người giúp đỡ lấy chuỗi giống tham số tạo HTML điều tơi bao gồm việc xem Index Listing 21-8 Định nghĩa phương thức trợ giúp New CustomHelpers.cs File Tôi sử dụng phương thức String.Format tạo HTML đánh dấu truyền kết giống đối số đến phương thức tạo MvcHtmlString Trong listing 21-9, bạn thấy cách mà tơi thay đổi /View/Home/Index.cshtml sử dụng phương thức trợ giúp (tôi làm vài thay đổi nhấn mạnh nội dung mà đến từ phương thức trợ giúp.) Listing 21-9 Sử dụng phương thức trợ giúp DisplayMessage Index.cshtml File 10 Đối với tình trạng q tải trước đó, cho phép bạn định giá trị cho thuộc tính phương pháp sử dụng giá trị từ System.Web.Mvc.FormMethod enumeration Đối với tình trạng q tải trước đó, cho phép bạn định thuộc tính cho yếu tố hình thức đối tượng có thuộc tính sử dụng tên thuộc tính Đối với tình trạng q tải trước đó, cho phép định giá trị cho phân đoạn cấu hình định tuyến ứng dụng đối tượng có thuộc tính tương ứng với biến định tuyến 23 Tôi cho bạn phiên đơn giản phương pháp BeginForm, tất tơi cần cho ứng dụng ví dụ, Listing 21-19, bạn thấy phức tạp nhất, tơi định thêm thơng tin để làm yếu tố hình thức phải xây dựng Listing 21-19 Sử dụng tải phức tạp phương thức BeginForm file CreatePerson.cs @model HelperMethods.Models.Person @{ ViewBag.Title = "CreatePerson"; Layout = "/Views/Shared/_Layout.cshtml"; } CreatePerson @using (Html.BeginForm("CreatePerson", "Home", new { id = "MyIdValue" }, FormMethod.Post, new { @class = "personClass", data_formType="person"})) { PersonId First Name Last Name } Trong ví dụ này, tơi xác định cách rõ ràng số chi tiết mà suy luận tự động MVC Framework, tên hành động điều khiển Tôi xác định hình thức phải gửi phương thức HTTP POST, lẽ sử dụng anyway Những lập luận thú vị người thiết lập giá trị cho biến đường thiết lập thuộc tính yếu tố hìn h thức Tôi tuyến giá trị tham số để xác định giá trị cho biến mảng id tuyến đường mặc định thêm Visual Studio để /App_Start/RouteConfig.cs dự án tạo tơi định nghĩa lớp liệu thuộc tính (Data thuộc tín h thuộc tính tùy chỉnh mà bạn thêm vào yếu tố để làm cho nội dung xử lý HTML) Dưới thẻ HTML form gọi để BeginForm sản xuất: 24 data- Bạn thấy giá trị cho thuộc tính id nối vào URL đích thuộc tính lớp liệu áp dụng cho phần tử Chú ý định thuộc tính gọi data_formType gọi đến BeginForm kết thúc với thuộc tính liệu formType đầu Bạn định tên thuộc tính đối tượng động có chứa dấu gạch nối, tơi sử dụng gạch mà sau tự động ánh xạ tới dấu nối đầu ra, gọn gàng bên-bước không phù hợp C # cú pháp HTML (Và, tất nhiên, tơi có tiền tố lớp tên sở hữu với @ mà tơi sử dụng C # -reserved từ khóa tên tài sản cho thuộc tính lớp.) Quy định cụ thể tuyến đường sử dụng Form Khi bạn sử dụng phương pháp BeginForm, Mô hình MVC tìm tuyến cấu hình định tuyến dùng để tạo URL đích hành động yêu cầu điều khiển Về chất, bạn rời khỏi chọn tuyến để hình dung cho bạn Nếu bạn muốn đảm bảo tuyến đặc biệt sử dụng, sau bạn thay vào sử dụng phương pháp người trợ giúp BeginRouteForm Để chứng minh tính này, Tơi thêm đường vào /App_Start/RouteConfig.cs tập tin, nêu Listing 21-20 Listing 21-20 Thêm vào route file RouteConfig.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace HelperMethods { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( name: "FormRoute", url: "app/forms/{controller}/{action}" ); } 25 } } Nếu Tôi gọi phương pháp BeginForm với cấu hình định tuyến này, rốt tơi với thành phần mẫu thuộc tính có hành động chứa URL mà tạo lập từ tuyến mặc định Trong Listing 21-21., bạn thấy Tôi định rõ đường nên sử dụng qua phương pháp BeginRouteForm Listing 21-21 Xác định Route nên sử dụng file CreatePerson.cshtml @model HelperMethods.Models.Person @{ ViewBag.Title = "CreatePerson"; Layout = "/Views/Shared/_Layout.cshtml"; } CreatePerson @using(Html.BeginRouteForm("FormRoute", new {}, FormMethod.Post, new { @class = "personClass", data_formType="person"})) { PersonId First Name Last Name } This produces the following form tag, whose action attribute corresponds to the structure of the new route: Mẹo Có phạm vi tải khác cho phương pháp BeginRouteForm cho phép bạn xác định có mức độ chi tiết cho thành phần mẫu, với phương pháp BeginForm Này theo cấu trúc với đối tác BeginForm chúng Xem tài liệu hướng dẫn API để biết thêm chi tiết Using Input Helpers 26 Định dạng HTML chẳng có ích lợi bạn tạo số phần tử đầu vào Table 21-6 cho thấy phương pháp trình hỗ trợ sẵn sàng cho tạo phần tử đầu vào cho ví dụ HTML chúng tạo Cho tất trình hỗ trợ phương pháp, đối số dùng để thiết lập giá trị id tên thuộc tính cho phần tử đầu vào đối số giây dùng để thiết lập thuộc tính giá trị Table 21-6 Trình hỗ trợ HTML đầu vào HTML Ele ment Example Html.CheckBox("myCheckbox", false) Check box Output: Html.Hidden("myHidden", "val") Output: Hidden field Html.RadioButton("myRadiobutton", "val", true) Output: Html.Password("myPassword", Radio button "val") Output: Html.TextArea("myTextarea", "val", 5, 20, null) Password Output: val Html.TextBox("myTextbox", "val") Output: Text area Text box 27 Mỗi trình hỗ trợ bị tải Bảng cho thấy phiên đơn giản, bạn cung cấp đối số đối tượng bổ sung bạn sử dụng để xác định thuộc tính HTML, Tôi với thành phần mẫu phần trước Chú thích nhận thấy trình hỗ trợ hộp kiểm ( Html Hộp kiểm ) biểu hai đầu vào phần tử Nó biểu hộp kiểm phần tử đầu vào ẩn tên Đây trình duyệt khơng đệ trình giá trị cho checkboxes chúng khơng chọn Có điều khiển ẩn đảm bảo MVC Mơ hình giá trị từ trường ẩn chuyện xảy Bạn thấy Tôi dùng phương pháp người trợ giúp đầu vào Listing 21-22 Listing 21-22 Using the Basic Input Element Helper Methods in the CreatePerson.cshtml File @model HelperMethods.Models.Person @{ ViewBag.Title = "CreatePerson"; Layout = "/Views/Shared/_Layout.cshtml"; } CreatePerson @using(Html.BeginRouteForm("FormRoute", new {}, FormMethod.Post, new { @class = "personClass", data_formType="person"})) { PersonId @Html.TextBox("personId", @Model.PersonId) First Name @Html.TextBox("firstName", @Model.FirstName) Last Name @Html.TextBox("lastName", @Model.LastName) } Bạn thấy phần tử đầu vào HTML góc nhìn tạo Listing 21-23 Đầu giống phần tử dạng gốc, bạn thấy số gợi ý Mô hình MVC có xuất dạng số thuộc tính liệu mà thêm vào hỗ trợ việc làm hợp lệ lập công thức, Tôi mô tả Chương 25 Listing 21-23 Phần tử Đầu vào Tạo từ trình hỗ trợ Cơ sở Đầu vào 28 data- PersonId First Name Last Name Tạo Phần tử Đầu vào từ Tính chất Mơ hình Phương pháp người trợ giúp Tôi dùng phần trước tốt, Tôi phải đảm bảo chuyển Tôi giá trị đối số phù hợp với chuyển Tơi giá trị mơ đối số giây Nếu chúng khơng qn, sau Mơ hình MVC khơng thể xây dựng lại đối tượng mơ hình từ liệu lập cơng thức thuộc tính tên giá trị hình thức phần tử đầu vào không trùng khớp Đối với phương pháp Tơi liệt kê Table 21-6, có tải khác mà lấy chuỗi đối số, Tôi dùng Listing 21-24 Listing 21-24 Tạo Phần tử Đầu vào từ Tên Tính chất Mơ hình file CreatePerson.cshtml @model HelperMethods.Models.Person @{ ViewBag.Title = "CreatePerson"; Layout = "/Views/Shared/_Layout.cshtml"; } CreatePerson @using(Html.BeginRouteForm("FormRoute", new {}, FormMethod.Post, new { @class = "personClass", data_formType="person"})) { PersonId @Html.TextBox("PersonId") 29 First Name @Html.TextBox("firstName") Last Name @Html.TextBox("lastName") } Đối số chuỗi dùng để tìm kiếm liệu góc nhìn, ViewBag, mơ hình góc nhìn để tìm mục liệu tương ứng dùng làm tảng cho phần tử đầu vào Vì vậy, chẳng hạn, bạn gọi @Html Hộp văn (" DataValue" ), Mơ hình MVC cố gắng tìm số khoản mục liệu liên hệ thư từ với DataValue then chốt Vị trí sau kiểm tra : ViewBag.DataValue @Model.DataValue Giá trị tìm thấy dùng để thiết lập thuộc tính giá trị HTML tạo ( Kiểm tra cuối cùng, cho @Model DataValue, làm việc mô hình góc nhìn cho góc nhìn chứa tính chất trường gọi DataValue ) Nếu Tôi xác định chuỗi DataValue Trước tiên Tên, tìm kiếm trở thành phức tạp Mơ hình MVC thử xếp khác dấu chấm - riêng biệt phần tử, thứ sau đây: ViewBag.DataValue.First.Name ViewBag.DataValue["First"].Name ViewBag.DataValue["First.Name"] ViewBag.DataValue["First"]["Name"] Nhiều phép hoán vị kiểm tra Một lần nữa, giá trị tìm thấy dùng, kết thúc tìm kiếm Có xem xét hiệu rõ ràng để kỹ thuật này, ghi nhớ thường vài khoản mục túi góc nhìn, khơng lấy thời gian nhiều để lục sốt chúng Sử dụng loại trình hỗ trợ đầu vào mạnh mẽ Đối với trình hỗ trợ đầu vào Tơi mơ tả Table 21-6,có tương ứng trình hỗ trợ gõ mạnh mẽ Bạn thấy trình hỗ trợ Table 21-7 với mẫu HTML chúng tạo Trình hỗ trợ sử dụng với góc nhìn gõ mạnh mẽ ( Vài trình hỗ trợ tạo thuộc tính giúp việc làm hợp lệ lập cơng thức bên máy khách Tơi có bỏ qn từ bảng cho ngắn.) Table 21-7 Trình hỗ trợ đầu vào HTML mạnh mẽ: HTML Ele ment Example Html.CheckBoxFor(x => x.IsApproved) Check box 30 Output: Html.HiddenFor(x => x.FirstName) Hidden field Output: Html.RadioButtonFor(x => x.IsApproved, "val") Output: Radio button Html.PasswordFor(x => x.Password) Output: Html.TextAreaFor(x Password => x.Bio, 5, 20, new{}) Output: Bio value Html.TextBoxFor(x => x.FirstName) Text area Output: Text box 31 Trình hỗ trợ đầu vào gõ mạnh làm việc biểu thức lambda Giá trị chuyển đến biểu thức đối tượng mơ hình góc nhìn, bạn chọn trường tính chất dùng để thiết lập thuộc tính giá trị Bạn thấy Tơi dùng loại trình hỗ trợ CreatePerson góc nhìn cshtml từ ứng dụng ví dụ Listing 21-25 Listing 21-25 Trình hỗ trợ đầu vào HTML mạnh mẽ file CreatePerson.cshtml @model HelperMethods.Models.Person @{ ViewBag.Title = "CreatePerson"; Layout = "/Views/Shared/_Layout.cshtml"; } CreatePerson @using(Html.BeginRouteForm("FormRoute", new {}, FormMethod.Post, new { @class = "personClass", data_formType="person"})) { PersonId @Html.TextBoxFor(m => m.PersonId) First Name @Html.TextBoxFor(m => m.FirstName) Last Name @Html.TextBoxFor(m => m.LastName) } HTML tạo trình hỗ trợ vậy, Tôi sử dụng phương pháp người trợ giúp gõ mạnh dự án riêng chúng giảm nguy gây lỗi mistyping tên tính chất Tạo phần tử select Table 21-8 cho thấy phương pháp người trợ giúp dùng để tạo phần tử chọn Này dùng để chọn khoản mục từ danh sách thả xuống giới thiệu nhiều - khoản mục chọn phần tử để vài khoản mục chọn lựa Cùng với thành phần mẫu khác, có phiên trình hỗ trợ yếu ớt mạnh mẽ gõ Table 21-8 Phần tử Chọn Trình hỗ trợ Render HTML 32 HTML Ele ment Example Html.DropDownList("myList", new SelectList(new [] {"A", "B"}), "Choose") Output: Drop-down list Choose A B Html.DropDownListFor(x => x.Gender, new SelectList(new [] {"M", "F"})) Output: M Drop-down list F Html.ListBox("myList", new MultiSelectList(new [] {"A", "B"})) Output: A B Multiple-select Html.ListBoxFor(x => x.Vals, new MultiSelectList(new [] {"A", "B"})) Output: 33 Multiple-select A B Trình hỗ trợ chọn lấy SelectList MultiSelectList tham biến Sự khác biệt lớp MultiSelectList có tùy chọn kiến thiết bạn xác định khoản mục nhiều nên chọn lựa trang biểu ban đầu Cả hai lớp vận hành IEnumerable dãy đối tượng Ở Bảng 21-8 , Tôi tạo mảng nội tuyến chứa khoản mục danh sách Tôi muốn hiển thị, dễ thương đặc điểm SelectList MultiSelectList chúng bung nén giá trị từ đối tượng, bao gồm đối tượng mơ hình, cho khoản mục danh sách Bạn thấy Tơi có tạo phần tử chọn cho tính chất Vai trò mơ hình Người Listing 21-26 Listing 21-26 Tạo phần tử Select cho tùy chỉnh Person.Role file CreatePerson.cshtml @model HelperMethods.Models.Person @{ ViewBag.Title = "CreatePerson"; Layout = "/Views/Shared/_Layout.cshtml"; } CreatePerson @using(Html.BeginRouteForm("FormRoute", new {}, FormMethod.Post, new { @class = "personClass", data_formType="person"})) { PersonId @Html.TextBoxFor(m => m.PersonId) First Name @Html.TextBoxFor(m => m.FirstName) Last Name @Html.TextBoxFor(m => m.LastName) Role @Html.DropDownListFor(m => m.Role, SelectList(Enum.GetNames(typeof(HelperMethods.Models.Role)))) 34 < / d i v > < i n p u t t y p e = " s u b mit" value="Submit" /> new } Tơi định nghĩa tính chất Vai trò cho giá trị từ liệt kê Vai trò định nghĩa lớp tập tin Vì SelectList MultiSelectList đối tượng vận hành đối tượng IEnumerable, Tôi phải sử dụng Enum GetNames phương pháp để sử dụng enum Vai trò nguồn để phần tử chọn Bạn thấy HTML phiên góc nhìn tạo ra, bao gồm phần tử chọn, Listing 21-27 Listing 21-27 HTML tạo Góc nhìn CreatePerson 35 CreatePerson label { display: inline-block; width: 100px;} dataElem { margin: 5px;} CreatePerson PersonId

Ngày đăng: 23/10/2019, 21:16

TỪ KHÓA LIÊN QUAN

w