2011-11-07 9 views
6

Mam model widok z posesji na to, że wygląda tak:Jak masz na myśli użycie wiersza, opis zamówienia przy zastosowaniu danych-adnotacji w ASP.NET MVC 3

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

Ale to robi nie wydaje się renderować niczego więcej w widoku. Czy potrzebujesz dodatkowej pracy?

<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> 

Odpowiedz

14

Nie wszystkie z wbudowaną EditorTemplates wykorzystać wszystkie DataAnnotations, ale są tam podczas pisania własnych EditorTemplates można je wykorzystać.

Zamawianie tak naprawdę nie ma zastosowania, chyba że robisz DisplayForModel lub EditorForModel, gdzie wyświetla się wiele edytorów dla wszystkich właściwości w modelu, może wtedy odpowiednio zamówić Edytor.

Jeśli chcesz skorzystać z metadanych Description i Prompt można napisać własną String EditorTemplate:

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

myślę, że powinno być ViewData.ModelMetadata.Watermark. Miałem nadzieję, że byłoby to trochę bardziej dynamiczne. Nie chcę korzystać z EditorTemplates dla wszystkich moich danych wejściowych. "element zastępczy" nie jest nawet obsługiwany w IE. :(- Mimo to, wydaje się, że jest to najlepsza odpowiedź: – 4imble

+0

Naprawiono próbkę kodu Tak, to denerwujące, ale gdy już opracujesz dobry zestaw standardowych edytowalnych edytorów, możesz po prostu użyć ich wielokrotnie. widziałem pewne rzeczy na Nuget, ale nie jestem pewien, czy istnieje ostateczny projekt –

+0

Może czas na rozpoczęcie nowego projektu GitHub :) –