Как создать пользовательский интерфейс панели управления с помощью ASP.NET MVC?

В настоящее время я создаю приложение с использованием ASP.NET MVC. Страницы ввода данных довольно легко закодировать, я просто делаю Модель для страницы типа моего бизнес-объекта:

namespace MyNameSpace.Web.Views.ProjectEdit
{
    public partial class MyView : ViewPage<Project>
    {
    }
}

Где я борюсь, так это в том, чтобы выяснить, как лучше всего реализовать панель инструментов, например интерфейс, с автономными частями, используя ASP.NET MVC, где модель для каждой части будет другой? Я предполагаю, что каждая часть будет пользовательским элементом управления MVC.

Кроме того, как я могу сделать так, чтобы каждую часть можно было проверить?


person mattruma    schedule 16.11.2008    source источник


Ответы (3)


Я думаю, что пользовательский контроль - это, вероятно, путь. Я не уверен, что беспокоит тестируемость. Вы должны быть в состоянии проверить, что ваш контроллер предоставляет правильные данные представления - поскольку у вас будет несколько моделей, каждая из них, вероятно, будет храниться в отдельном элементе данных представления, а не агрегировать их в одной модели. Агрегирование в единую модель также возможно, хотя, вероятно, более хрупкое. Каждому элементу управления нужно будет просто проверять конкретный элемент данных представления, а не специфичный для конкретной модели. Вы можете аппроксимировать переменную модели на каждой странице просмотра, выполнив следующие действия:

<% MyUserControlModel model = ViewData["MyUserControlModel"]
         as MyUserControlModel; %>

<div id="myUserControl_dashboard" class="dashboard">
   Name: <%= model.Name %><br />
   Count: <%$ model.Count %>
</div>

Если вам нужно протестировать свое представление, то вы, вероятно, уже используете Selenium или какую-либо другую среду веб-тестирования. Я не думаю, что им будет важно, как была построена страница, и вы должны иметь возможность создавать свои тесты почти так же, как вы всегда это делаете.

person tvanfosson    schedule 16.11.2008
comment
Допустим, у меня есть HomeController... и в представлении Index я хочу отобразить X других пользовательских элементов управления... как мне это сделать? - person mattruma; 16.11.2008
comment
Создайте свой DashboardView, который отображает каждый из пользовательских элементов управления в представлении, расположенном так, как вы хотите. Сделайте так, чтобы действие Index собирало модели, необходимые для каждого из пользовательских элементов управления, и сохраняло каждую модель в элементе ViewData с соответствующим именем. Каждому элементу управления нужно только отображать свои данные. - person tvanfosson; 16.11.2008
comment
(продолжение) Действие Index возвращает ViewResult для DashboardView с соответствующими данными для каждого из пользовательских элементов управления. - person tvanfosson; 16.11.2008

Ознакомьтесь с понятием субконтроллеров в MVC-Contrib http://www.codeplex.com/MVCContrib. По сути, вы запускаете полный запрос к частичному, а затем отображаете его в том месте, где хотите, в своем существующем коде.

В качестве альтернативы вы можете проверить этот пост: http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

person Kyle West    schedule 16.11.2008

Codeplex.com имеет проект с открытым исходным кодом «DotNet.Highcharts». Этот проект предоставляет элемент управления ASP.NET, который включает в себя превосходную (бесплатную для личного использования) библиотеку диаграмм Highcharts. который включает образец проекта MVC3 в разделе загрузок.

URL: http://dotnethighcharts.codeplex.com/

Я разместил статью на CodeProject.com, которая включает в себя загружаемое решение VS2012 и пример кода C#. Однако в моем примере я использую шаблон веб-формы, а не MVC. Основная часть панели инструментов сделана с использованием библиотек JavaScript, HTML и CSS. Я включил пример кода C# для демонстрации извлечения данных на C#, который затем объединился с кодом JavaScript для отображения одной из многих диаграмм панели мониторинга.

person kannankeril    schedule 06.07.2013
comment
Спасибо тебе за это. У меня есть вопрос. Мне хотелось бы знать, как бы вы передавали данные пользовательских элементов управления в r, позволяли бы r обрабатывать данные и возвращать результаты обратно в ui для отображения на диаграммах highcharts. У вас есть примеры кодов, чтобы поделиться? Любые идеи, как я могу это сделать? - person user1471980; 03.08.2014