Bu eski bir soruydu, ancak mevcut yanıtlar, modeli yeniden oluşturduğunuzda herhangi bir özel özniteliği atma gibi ciddi sorunu görmezden geliyor. Mevcut seçenekleri kapsayacak şekilde daha ayrıntılı bir cevap ekliyorum.
3 seçeneğiniz var:
[DisplayName("Name goes here")]
Veri modeli sınıfına bir öznitelik ekleyin . Dezavantajı, veri modellerini her yeniden oluşturduğunuzda bunun bir kenara atılmasıdır.
- Sizin
Html.LabelFor
. örneğin @Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
Referans: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspx Bunun dezavantajı, etiketi tekrarlamanız gerektiğidir her açıdan.
- Üçüncü seçenek. Veri sınıfına eklenmiş bir meta veri sınıfı kullanın (ayrıntılar aşağıdadır).
Seçenek 3 - Bir Meta Veri Sınıfı Ekleme:
Microsoft , var olan sınıfı değiştirmeden bir Entity Framework sınıfındaki özelliklerin dekorasyonuna izin verir ! Bu, veritabanı sınıflarınıza eklenen meta veri sınıflarına sahip olarak (etkili bir şekilde EF sınıfınızın yanlara doğru bir uzantısıdır). Bu, özniteliklerin sınıfın kendisine değil ilişkili sınıfa eklenmesine izin verir , böylece veri modellerini yeniden oluşturduğunuzda değişiklikler kaybolmaz .
Örneğin, veri sınıfınız MyModel
bir SomekingStatus
özelliğe sahipse , bunu şu şekilde yapabilirsiniz:
Önce , aynı ada sahip (ve aynı ad alanını kullanarak) kısmi bir sınıf bildirin; bu, geçersiz kılınmadan bir sınıf özelliği eklemenize olanak tanır:
[MetadataType(typeof(MyModelMetaData))]
public partial class MyModel
{
}
Oluşturulan tüm veri modeli sınıfları, yalnızca aynı adda daha fazla sınıf oluşturarak fazladan özellikler ve yöntemler eklemenize izin veren kısmi sınıflardır (bu çok kullanışlıdır ve genellikle bunu, örneğin modeldeki diğer alan türlerinin biçimlendirilmiş dize sürümlerini sağlamak için kullanırım. ).
Adım 2: Yeni kısmi sınıfınız tarafından referans verilen bir meta veri sınıfı ekleyin:
public class MyModelMetaData
{
[DisplayName("My New Label")]
public string SomekingStatus;
}
Referans: https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute(v=vs.110).aspx
Notlar:
- Bellekten, bir meta veri sınıfı kullanmaya başlarsanız, gerçek sınıf (
[required]
vb.) Üzerindeki mevcut öznitelikleri yok sayabilir, bu nedenle Meta-veri sınıfındakileri çoğaltmanız gerekebilir.
- Bu sihirle çalışmaz ve sadece herhangi bir sınıfla çalışmaz. UI dekorasyon özniteliklerini arayan kod, önce bir meta-veri sınıfını aramak için tasarlanmıştır.