Код параметризуется? То есть вы можете контролировать различия между одним вызовом и другим с помощью небольшого набора параметров? Если так, то я бы подумал написать расширение HtmlHelper для его генерации. Тогда я бы использовал расширение в моем View для генерации кода. Передайте параметры в View через ViewData из контроллера, если вы не можете получить его из Model или RouteValues.
<%= Html.GenerateGoogleVisAPI( ViewData["someThing"],
ViewData["otherThing"] ) %>
Другой альтернативой может быть превращение его в ViewUserControl, в который можно передавать Model и ViewData. Вы все еще включили бы это через представление.
<% Html.RenderPartial( "GoogleVisControl",
ViewData["GoogleVisModel"],
ViewData ); %>
EDIT
Мои HtmlHelperExtensions обычно идут в отдельном проекте библиотеки классов. Таким образом, моя иерархия будет выглядеть примерно так: Обратите внимание, что для краткости я опускаю связанные тестовые проекты для каждого уровня, но они также будут там. Если у вас есть несколько приложений, использующих один и тот же уровень данных, уровень данных может существовать в отдельном решении, полностью в зависимости от того, есть ли у вас одно решение на приложение или несколько приложений на решение. Я добавляю ссылки на проекты в веб-проект для проектов библиотеки классов.
+-Project.Web
+-Content
+-Controllers
+-Models
+-Views
+-...
+-Shared
+-Error.aspx
+-GoogleVisControl.ascx
+-LoginUserControl.ascx
+-Site.Master
+-...
+-...
+-...
+-Project.Common
+-Project.Common.Web
+-HtmlHelperExtensions.cs
+-...
+-Project.Data
+...