คลาส ASP.NET MVC / Linq-to-SQL: ฉันสามารถอนุมานชื่อที่แสดงที่อ่านได้หรือไม่

หากฉันมีตาราง Orders ที่มีฟิลด์ CustomerID, OrderID และ OrderDate คลาสที่สร้าง "คลาส Linq-to-SQL" จะถูกเรียกว่า Orders โดยมีสมาชิกชื่อ CustomerID, OrderID และ OrderDate จนถึงตอนนี้ดีมาก

อย่างไรก็ตาม หากฉันทำ Html.LabelFor(m => m.OrderDate) ข้อความที่สร้างขึ้นจะเป็น "OrderDate" แทนที่จะเป็น "Order Date"

ฉันลองใช้ Order_Date เป็นชื่อฟิลด์ แต่ก็ไม่ได้ผล มีวิธีใดบ้างที่จะทำให้อนุมานชื่อที่แสดงได้ดีขึ้น?

[ฉันรู้ว่าฉันสามารถใช้คำอธิบายประกอบข้อมูลเพื่อระบุชื่อที่แสดงอย่างชัดเจน แต่ฉันไม่ต้องการทำเช่นนั้นกับชั้นเรียน/สมาชิกทั้งหมดของฉัน - ฉันแค่อยากให้มันทำงานตามแบบแผน]


person Gary McGill    schedule 29.03.2010    source แหล่งที่มา
comment
เป็นไปได้ที่ซ้ำกันของ stackoverflow.com/questions/2269144/   -  person George Stocker    schedule 13.04.2010


คำตอบ (3)


วิธีการนี้ใช้ประโยชน์จากสถาปัตยกรรม MVC 2 ที่มีอยู่เพื่อวางแบบแผนทั่วทั้ง *สำหรับวิธีการเรนเดอร์ แทนที่จะใช้ตัวช่วย HTML ตัวใดตัวหนึ่ง และโดยไม่ต้องติดป้ายกำกับทุกอย่างใหม่ด้วยชื่อคุณสมบัติที่เว้นระยะห่าง

วิธีทำให้แอตทริบิวต์ C# ในโมเดลแห้ง และ ViewModels?

โดยพื้นฐานแล้วสิ่งที่คุณทำคือการเอาชนะพฤติกรรม ConventionModelMetadataProvider เริ่มต้นของ MVC 2 และจัดเตรียม hooks ให้คุณแทรกแบบแผนความคิดเห็นของคุณเอง

person John Farrell    schedule 29.03.2010
comment
@jfar: ฉันหวังเป็นอย่างยิ่งว่าจะได้บางสิ่งบางอย่างนอกกรอบ แต่นี่คือสิ่งที่ดีที่สุดถัดไปเนื่องจากอย่างน้อยมันก็เป็นไปตามเส้นทางการขยาย (และดีกว่าที่จะทำการปรับใช้ *For ใหม่ทั้งหมด) - person Gary McGill; 30.03.2010

ฉันขอแนะนำให้คุณสร้างตัวช่วย HTML ของคุณเองสำหรับสิ่งนี้ เช่น Html.MyLabelFor

กฎเกณฑ์ที่จะใช้ต่อจากนี้ขึ้นอยู่กับคุณ คุณสามารถแยกคำตามกรณีได้

person bruno conde    schedule 29.03.2010
comment
ตกลง ตามธรรมเนียมแล้วหมายความว่าคุณต้องทำเอง - person Russell Steen; 29.03.2010
comment
ถึงกระนั้นก็ตาม แบบแผนใน C#/VB คือการตั้งชื่อคุณสมบัติโดยใช้ Camel-casing สำหรับวิธีการที่มีวัตถุประสงค์เพียงอย่างเดียวในการแสดงคุณสมบัติเวอร์ชันที่มนุษย์สามารถอ่านได้ ฉันเกือบจะคาดหวังว่ามันจะทำเช่นนี้แล้ว ตามแบบแผน. - person James Kolpack; 29.03.2010
comment
โอเคขอบคุณ. ฉันจะทำเครื่องหมายว่าเป็นคำตอบ แม้ว่าจะไม่ใช่คำตอบที่ฉันกำลังมองหาก็ตาม! - person Gary McGill; 29.03.2010
comment
@James: ฉันคิดว่าคุณหมายถึง PascalCase ไม่ใช่ CamelCase เหรอ? - person Gary McGill; 29.03.2010
comment
@Gary McGill ลองดูคำตอบของฉันด้านล่าง มันเพิ่มแบบแผนของคุณให้กับกรอบงาน MVC 2 แทนที่จะบังคับให้คุณเขียนตัวช่วย HTML - person John Farrell; 29.03.2010

มีวิธีแก้ไขปัญหาสำหรับความต้องการของคุณซึ่งมีอยู่ในคำตอบสำหรับคำถามนี้ Asp.Net MVC 2 LabelFor ข้อความแบบกำหนดเอง

person Nicholas Murray    schedule 29.03.2010