0

ASP.NET MVC Tip #11 – Sử dụng Standard Controller Action Names

Trong thủ thuật này, tôi khuyên bạn nên sử dụng tên chuẩn cho controller action của bạn để làm cho code của bạn trong suốt hơn với các nhà phát triển khác.

Áp dụng quy ước đặt tên làm cho code của bạn dễ đọc hơn cho các nhà phát triển khác và tự tương lai của chính bạn. Quy ước đặt tên cũng giúp bạn tiết kiệm thời gian để bạn có thể ngăn chặn các cuộc tranh luận bất tận về cách “đúng” để đặt tên một cái gì đó. Trong thủ thuật này, tôi khuyên bạn nên đặt tên chuẩn cho ASP.NET MVC controller action.

Dưới đây là bảng tên tiêu chuẩn đề nghị cho những controller action:

Action 1 Sample URL Description
Details /Product/Details/5 Hiển thị một nguồn tài nguyên duy nhất như một bản ghi cơ sở dữ liệu. Ví dụ, sẽ hiển thị một sản phẩm duy nhất với một Id 5.
Index /Product/Index Hiển thị một tập hợp các tài nguyên. Ví dụ, hiển thị tất cả các sản phẩm trong bảng sản phẩm cơ sở dữ liệu.
Create /Product/Create Hiển thị form để tạo một tài nguyên mới. Ví dụ, hiển thị một form để tạo ra một sản phẩm mới.
Insert /Product/Insert Chèn một tài nguyên mới vào cơ sở dữ liệu. Thông thường, bạn chuyển hướng đến hành động khác sau khi thực hiện một câu insert.
Edit /Product/Edit/5 Hiển thị form để chỉnh sửa một nguồn tài nguyên hiện có. Ví dụ, hiển thị một form để chỉnh sửa một sản phẩm với một Id 5.
Update /Product/Update/5 Cập nhật tài nguyên hiện có trong cơ sở dữ liệu. Thông thường, bạn chuyển hướng đến hành động khác sau khi thực hiện một Update.
Destroy /Product/Destroy/5 Hiển thị trang xác nhận hay không, bạn muốn xóa một tài nguyên từ cơ sở dữ liệu.
Delete /Product/Delete/5 Xóa một tài nguyên từ các cơ sở dữ liệu. Thông thường, bạn chuyển hướng đến hành động khác sau khi thực hiện Delete.
Login /Home/Login Hiển thị form đăng nhập.
Logout /Home/Logout Đăng xuất người dùng. Thông thường, bạn chuyển hướng đến hành động khác sau khi thực hiện một Logout.
Authenticate /Home/Authenticate Xác nhận tên người dùng và mật khẩu. Thông thường, bạn chuyển hướng đến một hành động sau khi thực hiện Authenticate.

Tôi dựa những tên hành động (rất gần) vào quy ước đặt tên Adam Tybor cho Simply Restful Route Handler của ông bao gồm trong dự án MvcContrib tại địa chỉ:

http://www.codeplex.com/MVCContrib/Wiki/View.aspx?title=SimplyRestfulRouting&referringTitle=Documentation

Tuy nhiên, có sự khác biệt đáng kể giữa các công ước Adam Tybor và những người mà tôi khuyên bạn ở đây. Hãy để tôi giải thích sự thay đổi này.

Thứ nhất, Adam Tybor lấy các lợi thế từ HTTP khác nhau để chỉ những controller action thực hiện (ông đang REST purist). Ví dụ, Adam Tybor khuyến cáo rằng các URL tương tự được sử dụng để hoặc xoá hoặc cập nhật tài nguyên:

/Product/34

Khi URL này được yêu cầu với một HTTP PUT sau đó là một bản ghi hiện đang được cập nhật. Khi cùng một URL được yêu cầu với một HTTP DELETE sau đó là một bản ghi hiện tại sẽ bị xóa. Tuy nhiên, kiến nghị Adam Tybor của không làm việc với ASP.NET MVC route mặc định. Vì vậy, tôi khuyên bạn nên sử dụng các URL khác nhau khi thực hiện xóa và cập nhật:

/Product/34 /Product/Delete/34

Nếu bạn sử dụng các quy ước đặt tên, sau đó bạn có thể sử dụng bảng ASP.NET MVC route mặc định.

Một sự khác biệt quan trọng khác giữa quy ước đặt tên mà tôi khuyên bạn nên ở đây và quy ước đặt tên khác mà tôi đã thấy lo ngại việc đặt tên các hành động để tạo ra một tài nguyên mới. Thông thường, tôi thấy tên hành động sau đây sử dụng khi tạo một tài nguyên mới:

/Product/New

/Product/Create

Thông thường, hành động New được sử dụng để hiển thị một form để tạo một tài nguyên mới và hành động Create thực hiện các hoạt động chèn vào cơ sở dữ liệu.

Vấn đề với việc sử dụng một hành động mang tên mới là tên hành động này mâu thuẫn với từ khóa trong C # và Visual Basic .NET. Khi tạo một hành động điều khiển mới trong một ứng dụng Visual Basic.NET, bạn luôn phải nhớ để thoát khỏi cái tên như thế này [New] . Một cách nhanh chóng và nó cũng là khó hiểu đối với những người không hiểu ý nghĩa của các dấu ngoặc vuông. Vì vậy, tôi khuyên các cặp Create và Insert thay cho cặp New và Create .

Bạn có thể nhận thấy rằng tôi đã cố gắng sắp xếp các hành động (thường) thực hiện một hoạt động cơ sở dữ liệu với tên câu lệnh SQL tương ứng của họ. Do đó, các URL sau đây được dùng để hiển thị các forms:

/Product/Create

/Product/Edit/1

/Product/Destroy/1

Và các URL sau được sử dụng để thực hiện các hoạt động với cơ sở dữ liệu:

/Product/Insert

/Product/Update/1

/Product/Delete/1

Đề xuất quy ước đặt tên luôn có rủi ro vì các nhà phát triển có ý kiến cá nhân mạnh mẽ trên những cách dùng đúng tên sự vật. Tuy nhiên, tôi hy vọng mẹo này có thể hoạt động như là một điểm khởi đầu cho bất cứ điều gì quy ước đặt tên mà bạn phát triển.

Nguồn: https://weblogs.asp.net/stephenwalther/asp-net-mvc-tip-11-use-standard-controller-action-names


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.