2011-11-07 12 views
6

Şöyle üzerinde bir özelliğe sahip bir görünüm modele sahip Sipariş, İstemi, Açıklama kullanmak içindir: NasılEğer ASP.NET MVC veri ek açıklamaları uygulanırken 3

[Display(Name = "Some Property", Description = "This is description", Prompt = "This is prompt")] 
    [Required(ErrorMessage = RequiredFieldMessage)] 
    public string SomeProperty { get; set; } 

Ama bunu yapar görünümde fazladan bir şey göstermiyor gibi görünüyor. Biraz daha iş yapman gerekiyor mu?

<div class="editor-label"> 
     @Html.LabelFor(model => model.SomeProperty) 
    </div> 
    <div class="editor-field"> 
     @Html.TextAreaFor(model => model.SomeProperty , 5, 80, null) 
     @Html.ValidationMessageFor(model => model.SomeProperty) 
    </div> 

cevap

14

Değil EditorTemplates inşa tüm DataAnnotations tüm yararlanmak, ancak kendi EditorTemplates yazarken bunları artırabilen için orada.

DisplayForModel veya EditorForModel veya EditorForModel yapmıyorsanız, sipariş verme gerçekten geçerli değildir; bu model, modeldeki tüm özellikler için birden çok düzenleyiciyi göstermesi durumunda, Düzenleyicinin uygun şekilde siparişini verebilir. Bunun ViewData.ModelMetadata.Watermark olması gerektiğini düşünüyorum

@model string 
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { 
    @title = ViewData.ModelMetadata.Description, 
    @placeholder = ViewData.ModelMetadata.Watermark}) 
+0

: Eğer Description ve Prompt meta yararlanmak istiyorsa

kendi String EditorTemplate yazabiliriz. Bundan biraz daha dinamik olacağını ummuştum. Tüm girdilerim için EditorTemplates kullanmak zorunda kalmak istemiyorum. IE'de "yer tutucu" bile desteklenmez. :(- Her neyse, bu en iyi cevap gibi görünüyor. – 4imble

+0

Kod örneği düzeltildi, evet can sıkıcı, ama yeniden kullanılabilir bir çok genel EditörTemplates seti geliştirdikten sonra bunları tekrar tekrar kullanabilirsiniz. Bazı insanlar bunu Nuget hakkında bazı şeyler görmüştüm ama kesin bir proje olup olmadığından emin değilim. –

+0

Belki de yeni bir GitHub projesine başlama zamanı :) –