ASP.NET MVC Controller Naming Pluralization


89

อนุสัญญา RESTful ระบุการใช้คำนามพหูพจน์กับวัตถุเอกพจน์

หลักการพหูพจน์สำหรับการตั้งชื่อคอนโทรลเลอร์ ASP.NET MVC คืออะไร
ProductControllerหรือProductsController?


4
ฉันไม่คิดว่าพวกเขาควรจะถูกตัดสินแบบพหูพจน์จากค่าเริ่มต้นที่มาพร้อมกับบทช่วยสอน MVC บน ASP.net
user1477388

1
ASP.NET Web API ที่เป็นค่าเริ่มต้นมีทั้งชื่อเอกพจน์ (HomeController, AccountController) และชื่อพหูพจน์ (ValuesController)
Sergio Vicente

คำตอบ:


45

MVC Framework บางตัวใช้พหูพจน์อย่างไรก็ตามเทมเพลตโครงการ MVC มีคอนโทรลเลอร์ที่เรียกว่า AccountController ดังนั้นจึงแนะนำการตั้งชื่อแบบเอกพจน์

มันไม่สำคัญหรอก เช่นเดียวกับสิ่งต่างๆส่วนใหญ่ในเฟรมเวิร์ก Asp.net MVC ทางเลือกก็เป็นของคุณ ไม่มีแบบแผนจริงๆ

เป็นความคิดเห็นส่วนตัวของฉัน แต่สิ่งที่สำคัญคือคุณเลือกโครงการและสอดคล้องกัน!


4
ยกนิ้วให้กับการเน้นความสม่ำเสมอ
PIM

4
ฉันจะบอกว่าจริงๆแล้วนี่เป็นคำตอบที่ถูกต้อง: stackoverflow.com/a/31968960/2013803 (มีคะแนนโหวตมากกว่า แต่ไม่ได้ระบุว่าเป็น "คำตอบ) AccountController มีไว้สำหรับบัญชีของผู้ใช้ปัจจุบันโดยใช้ พหูพจน์จะแปลกมากเว้นแต่จะมีไว้สำหรับจัดการผู้ใช้หลายคนในแดชบอร์ดของผู้ดูแลระบบ แต่นั่นเป็นกรณีการใช้งานที่แตกต่างกันและ (IMHO) ควรเป็นตัวควบคุมที่แตกต่างกันและยังมีเพียงหน้าแรกสำหรับ HomeController ดังนั้น ... ความสอดคล้องควรเป็นเรื่องของการทำความเข้าใจว่าคอนโทรลเลอร์ทำอะไรและตั้งชื่อที่เหมาะสมตามนั้น
Jashan

166

ฉันจะต้องไม่เห็นด้วยกับคำตอบก่อนหน้าของการใช้พหูพจน์หรือเอกพจน์และสอดคล้องกัน ตัวควบคุมแต่ละตัวควรใช้รูปแบบที่แตกต่างกันขึ้นอยู่กับว่าพวกเขาโต้ตอบกับเอนทิตีเดียวหรือหลาย โดยเฉพาะอย่างยิ่งเนื่องจากมีการใช้ชื่อคอนโทรลเลอร์โดยค่าเริ่มต้นใน URL

แม้ว่าเทมเพลตโครงการจะใช้เอกพจน์ (HomeController, AccountController) แต่จะมีเพียงหน้าแรกเดียวและการดำเนินการบัญชีจะดำเนินการในบัญชีเดียวสำหรับเซสชันเท่านั้น ฉันไม่คาดหวังว่า URL ของ / บ้านจะเข้าถึงหน้าแรกและฉันไม่คาดหวังว่าจะไปที่ / บัญชีเพื่อจัดการการตั้งค่าบัญชีของฉัน

HomesController ที่เป็นพหูพจน์จะใช้กับเว็บไซต์อสังหาริมทรัพย์ที่มีวิธีการที่เกี่ยวข้องกับการลงรายการและค้นหาบ้านหลายหลัง: / homes / new-listings


3
ตกลง - ตัวอย่างเช่นUsersControllerถ้าคุณออกแบบเส้นทางของคุณเช่น/api/users(ผู้ใช้ทั้งหมด) และ/api/users/{userId}(ผู้ใช้รายเดียว)
Levi Fuller

2
จะไม่/api/user/{userId}ให้เช่นเดียวกับความรู้สึกมาก แต่คุณสามารถยืนยันว่าแม้ในกรณีของการจัดการกับผู้ใช้หลายคนที่สะท้อนให้เห็นถึงการควบคุมของคุณชนิดเอนทิตีจึงHomeControllerจะจัดการกับหน่วยงานประเภทHomeเพราะฉะนั้น/Home/{homeId}และ/Home/All-Homes/
NibblyPig

ฉันเห็นด้วยกับคำอธิบายนี้
Hailee

13

เมื่อคุณเพิ่มตัวควบคุมโดยใช้นั่งร้าน MVC สำหรับเอนทิตี Entity Framework VS2013 จะสร้างชื่อคอนโทรลเลอร์เป็นพหูพจน์ดังนั้นฉันขอแนะนำให้ใช้ค่าเริ่มต้นนั้นซึ่งทำให้ตัวควบคุมสำหรับเอนทิตีพหูพจน์

UPDATE: ฉันเปลี่ยนใจ LouD ถูกต้อง ขึ้นอยู่กับบริบทของคอนโทรลเลอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.