ASP.NET MVC: доступ к ModelMetadata для элементов в коллекции

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

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

Как получить ModelMetadata для определенного элемента в коллекции?

7 голосов | спросил devuxer 14 MaramSun, 14 Mar 2010 06:19:30 +03002010-03-14T06:19:30+03:0006 2010, 06:19:30

1 ответ


0

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

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) %>
ответил Darin Dimitrov 14 MaramSun, 14 Mar 2010 11:56:26 +03002010-03-14T11:56:26+03:0011 2010, 11:56:26

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132