Общее представление ASP.NET MVC для отображения данных - PullRequest
1 голос
/ 26 января 2010

Я работаю над проектом, предполагающим раскрытие многих объектов данных (более 200) через приложение ASP.NET MVC. Я не хочу писать представления для каждого режима сущности, и мне интересно, есть ли способ иметь одно общее представление для отображения разных моделей (например, представление, которое считывает свойства модели (метаданные) и генерирует таблицу HTML для отображения список лиц.

Ответы [ 3 ]

4 голосов
/ 26 января 2010

Если вам нужно только отобразить, вы можете написать свой собственный универсальный рендерер за несколько минут, используя отражение. Или вы можете использовать ModelVisualizer из MvcContrib или Grid из MvcContrib, который может использовать Html.Grid (Model) .AutoGenerateColumns () для автоматического отображения свойств в виде столбцов. Он не поддерживает DataAnnotations или атрибуты, но вы можете написать свой собственный метод расширения, который будет использовать отражение для генерации столбцов Grid на основе некоторых атрибутов. И вы можете быстро превратить эту сетку в jqGrid, используя метод tableToGrid () jqGrid.

Если вам нужна поддержка ввода, есть несколько вариантов:

  1. MvcContrib's InputBuilder (здесь вы можете увидеть простой пример того, как это делается с помощью отражения)
  2. MVC v2 InputFor (), я думаю, что он поддерживает рендеринг нескольких свойств, но я не уверен.
  3. Мое решение считывает метаданные (атрибуты) из моделей представления и автоматически генерирует параметры форматирования и редактирования jqGrid.

Должны быть и коммерческие инструменты.

2 голосов
/ 26 января 2010

Два варианта:

Проект динамических данных

Вы пробовали Asp.net Dynamic data проект, который может автоматически создавать то, что вам нужно?

Asp.net MVC

Но если вы хотите сделать то, что просите, вы всегда можете создать одно представление, которое не будет иметь модель строгого типа. Вы всегда будете передавать данные в него ViewData словарь. Затем представление будет анализировать эти данные и отображать то, что требуется.

Маршрутизация
Вы всегда можете создать эти два маршрута:

routes.MapRoute(
    "EntityRoute",
    "{entityName}",
    new {
        controller = "Entity",
        action = "Display",
        entityName = "SomeDefaultEntity" }
);

routes.MapRoute(
    "EntityRoute",
    "{entityName}/{recordId}",
    new {
        controller = "Entity",
        action = "Details",
        entityName = "SomeDefaultEntity",
        recordId = string.Empty }
);

, который перенаправит все запросы на одно и то же действие контроллера, которое предоставит правильные данные набора сущностей, передаст их в словарь ViewData и вернет представление, которое будет их использовать Второй будет отображать детали определенной записи в некоторой сущности (на случай, если вам потребуется предоставить основные / подробные функции).

0 голосов
/ 26 января 2010

MVC Contrib имеет визуализатор модели, который позволяет отображать модель, отражая ее свойства. Это не пойдет, если вам вообще нужна какая-то производительность, но, возможно, она заставит вас начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...