ASP.NET MVC: Доступ к ModelMetadata для объектов в наборе

Я пытаюсь записать авторабочему на лесах для Индексных представлений. Я хотел бы смочь передать в наборе моделей или моделей представления (например, IEnumerable<MyViewModel>) и возвратите HTML-таблицу, которая использует DisplayName атрибут для заголовков (th элементы) и Html.Display(propertyName) для ячеек (td элементы). Каждая строка должна соответствовать одному объекту в наборе.

Когда я только отображаю единственную запись, как в представлении Details, я использую ViewData.ModelMetadata.Properties получить список свойств для данной модели. Но что происходит, когда модель, которую я передаю представлению, является набором образцовых или объектов модели представления и не модели или самой модели представления?

Как я получаю ModelMetadata для конкретного объекта в наборе?

7
задан devuxer 14 March 2010 в 03:19
поделиться

1 ответ

Простой метод расширения может сработать:

public static class MyExtensions
{
    public static ModelMetadata GetMetadata<TModel>(this TModel model)
    {
        return ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel));
    }
}

И, по вашему мнению:

<%@ Page 
    Language="C#"
    Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.IEnumerable<MyViewModel>>" %>

<%-- Get metadata for the first item in the model collection --%>
<%= Html.Encode(Model.ElementAt(0).GetMetadata().ModelType) %>
6
ответ дан 7 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: