web-gelistirme-sc.com

Mvc3 içinde jilet içinde LabelFor ekran adını nasıl değiştirebilirim?

Jilet motorunda, adı görüntülemek için LabelFor helper yöntemini kullandım.

Ancak görünen adın gösterilmesi iyi değil gibi görünüyor .. __ bu yüzden nasıl yapılacağını göstermek için ekran adımı değiştirmem gerekiyor ....

@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"}) 
74
Sham

View model özelliğini [DisplayName] niteliği ile dekore edebilir ve kullanılacak metni belirtebilirsiniz:

[DisplayName("foo bar")]
public string SomekingStatus { get; set; }

Veya, metni belirtmenize izin veren LabelFor yardımcısının başka bir aşırı yüklemesini kullanın:

@Html.LabelFor(model => model.SomekingStatus, "foo bar")

Ve hayır, MVC3'te yapmaya çalıştığınız bir sınıf adı belirtemezsiniz, çünkü LabelFor yardımcısı bunu desteklemez. Ancak, bu MVC4 veya 5'de işe yarayacaktır.

148
Darin Dimitrov

Bu eski bir soruydu, ancak varolan cevaplar, modeli yeniden oluşturduğunuzda herhangi bir özel özelliği atma konusundaki ciddi sorunu görmezden geliyor. Mevcut seçenekleri kapsayacak şekilde daha ayrıntılı bir cevap ekliyorum.

3 seçeneğiniz var:

  • Veri modeli sınıfına [DisplayName("Name goes here")] niteliğini ekleyin. Dezavantajı, veri modellerini her ne zaman yeniden üretirseniz, bunun atılmasıdır.
  • Html.LabelFor 'a bir string parametresi ekleyin. Ö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 her görünümde tekrarlamanız gerektiğidir.
  • Üçüncü seçenek Veri sınıfına ekli bir meta veri sınıfı kullanın (ayrıntılar takip edin).

Seçenek 3 - Bir Meta Veri Sınıfı Ekleme:

Microsoft, bir Entity Framework sınıfındaki mevcut sınıfı değiştirmeden özelliklerin dekorasyonuna izin verir! Bu, veritabanı sınıflarınıza bağlanan meta-veri sınıflarına sahip olarak (efektif EF sınıfınızı yanlara doğru genişletme). Bu, özelliklerin ilişkili sınıfa eklenmesine ve sınıfın kendisine eklenmesine izin vermez, böylece veri modellerini yeniden oluşturduğunuzda değişiklikler kaybolmaz .

Örneğin, veri sınıfınız MyModel özelliğine sahip SomekingStatus ise, şu şekilde yapabilirsiniz:

Öncelikle, aynı adın (ve aynı ad boşluğunun kullanılmasıyla) bir kısmi sınıf belirtin; bu, geçersiz kılmadan bir sınıf niteliği eklemenizi sağlar:

[MetadataType(typeof(MyModelMetaData))]
public partial class MyModel
{
}

Üretilen tüm veri modeli sınıfları kısmi sınıflardır; aynı adla daha fazla sınıf oluşturarak ek özellikler ve yöntemler eklemenize izin verir (bu çok kullanışlıdır ve genellikle modeldeki diğer alan türlerinin biçimlendirilmiş dize sürümlerini sağlamak için kullanırım) ).

2. Adım: yeni kısmi sınıfınız tarafından başvurulan bir meta veri sınıfı ekleyin:

public class MyModelMetaData
{
    // Apply DisplayNameAttribute (or any other attributes)
    [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ıftaki ([required] etc) varolan ö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 niteliklerini arayan kod, öncelikle bir meta-veri sınıfını aramak için tasarlanmıştır.
29
Gone Coding

Etiketin metnini özelliği DisplayName niteliğiyle süsleyerek değiştirebilirsiniz. 

[DisplayName("Someking Status")]
public string SomekingStatus { get; set; }

Veya ham HTML'yi açıkça yazabilirsiniz:

<label for="SomekingStatus" class="control-label">Someking Status</label>
14
xandercoded

Model özelliğini, DisplayName özniteliğiyle süsleyin.

3
Teppic

@ Html.LabelFor (model => model.SomekingStatus, "foo bar")

0
Anurag