Я думаю, что пользовательские элементы управления - это, вероятно, путь. Я не уверен, что беспокоит тестируемость. Вы должны быть в состоянии проверить, что ваш контроллер предоставляет правильные данные представления - поскольку у вас будет несколько моделей, каждая из которых, вероятно, будет храниться в отдельном элементе данных представления, а не объединяться в одну модель. Агрегирование в одной модели также возможно, хотя, возможно, более хрупкое. Каждый элемент управления должен был бы просто проверять определенный элемент данных представления, а не быть определенным для конкретной модели. Вы можете аппроксимировать переменную модели на каждой странице просмотра, выполнив:
<% MyUserControlModel model = ViewData["MyUserControlModel"]
as MyUserControlModel; %>
<div id="myUserControl_dashboard" class="dashboard">
Name: <%= model.Name %><br />
Count: <%$ model.Count %>
</div>
Если вам нужно проверить свое представление, то вы, вероятно, уже используете Selenium или какую-либо другую среду веб-тестирования. Я не думаю, что это будет заботиться о том, как была создана страница, и вы должны иметь возможность создавать свои тесты почти так же, как вы всегда делаете.