Kelas ASP.NET MVC / Linq-to-SQL: Bisakah saya menyimpulkan nama tampilan yang dapat dibaca?

Jika saya memiliki tabel Orders dengan bidang CustomerID, OrderID dan OrderDate, maka kelas yang dihasilkan "kelas Linq-to-SQL" akan disebut Orders, dengan anggota disebut CustomerID, OrderID dan OrderDate. Sejauh ini bagus.

Namun, jika saya melakukan Html.LabelFor(m => m.OrderDate) maka teks yang dihasilkan akan menjadi "Tanggal Pemesanan" dan bukan "Tanggal Pemesanan".

Saya mencoba menggunakan Order_Date sebagai nama bidang, tetapi tidak berhasil. Apakah ada cara untuk menyimpulkan nama tampilan yang lebih baik?

[Saya tahu bahwa saya dapat menggunakan anotasi data untuk menentukan nama tampilan secara eksplisit, namun saya benar-benar tidak ingin melakukan itu untuk semua kelas/anggota saya - saya hanya ingin itu berfungsi sesuai konvensi.]


person Gary McGill    schedule 29.03.2010    source sumber
comment
kemungkinan duplikat stackoverflow.com/questions/2269144/   -  person George Stocker    schedule 13.04.2010


Jawaban (3)


Metode ini memanfaatkan arsitektur MVC 2 yang ada untuk menempatkan konvensi di seluruh *Untuk metode rendering, bukan hanya satu pembantu HTML dan tanpa harus memberi label ulang semuanya dengan nama properti yang diberi spasi.

Cara MENGERINGKAN atribut C# di Model dan ViewModel?

Pada dasarnya apa yang Anda lakukan adalah mengesampingkan perilaku ConventionModelMetadataProvider default MVC 2 dan memberikan kaitan bagi Anda untuk memasukkan konvensi pendapat Anda sendiri.

person John Farrell    schedule 29.03.2010
comment
@jfar: Saya benar-benar mengharapkan sesuatu yang out-of-the-box, tapi ini adalah hal terbaik berikutnya karena setidaknya mengikuti jalur ekstensibilitas (dan lebih baik daripada melakukan implementasi ulang *For). - person Gary McGill; 30.03.2010

Saya sarankan Anda membuat Pembantu HTML Anda sendiri untuk ini, seperti Html.MyLabelFor.

Aturan untuk diterapkan dari sini terserah Anda. Anda cukup membagi kata per kasus.

person bruno conde    schedule 29.03.2010
comment
Sepakat. menurut konvensi berarti Anda harus melakukannya sendiri - person Russell Steen; 29.03.2010
comment
Meski begitu, konvensi di C#/VB adalah memberi nama properti menggunakan casing unta. Untuk metode dengan tujuan menampilkan versi properti yang dapat dibaca manusia, saya hampir berharap metode tersebut sudah melakukan hal ini. Dengan perjanjian. - person James Kolpack; 29.03.2010
comment
Ok terima kasih. Saya akan menandai ini sebagai jawaban, meskipun itu bukan jawaban yang saya cari! - person Gary McGill; 29.03.2010
comment
@James: Saya kira yang Anda maksud adalah PascalCase, bukan camelCase? - person Gary McGill; 29.03.2010
comment
@Gary McGill Lihat jawaban saya di bawah. Itu menambahkan konvensi Anda ke kerangka MVC 2 alih-alih memaksa Anda untuk menulis pembantu HTML. - person John Farrell; 29.03.2010

Ada solusi yang tersedia untuk kebutuhan Anda yang terkandung dalam jawaban atas pertanyaan ini. Label Asp.Net MVC 2Untuk Teks Kustom.

person Nicholas Murray    schedule 29.03.2010