Когда вы говорите, что ваши раскрывающиеся списки используются в нескольких представлениях, вы все еще рассматриваете эти раскрывающиеся списки как часть представления, которое их отображает? Если это так, я думаю, что использование пользовательского помощника HTML или частичное представление (ascx) подходит. Затем, как вы предлагаете, вы можете заполнить данные для выпадающих списков, используя общий сервис из вашего уровня домена. Я думаю, что это очень разумный подход.
Однако, если вы чувствуете, что выпадающие списки являются внешними / не связаны с представлением, то вы можете обнаружить, что использование Html.RenderAction () дает гораздо более чистый результат. Используя Html.RenderAction (), вы можете вывести результат метода Action напрямую в любое другое представление. Таким образом, вы можете создать 1 контроллер с необходимыми методами действия для заполнения этих выпадающих списков. Например, предположим, что у вас есть вид примерно с:
<div>
<div id="coreView1">
<!-- some view code here -->
</div>
</div>
<div id="commonDropdowns">
<% Html.RenderAction("Create", "Dropdown"); %>
</div>
, где Создать - это имя вашего метода в DropdownController .
Например:
public class DropdownController : Controller
{
public ViewResult Create()
{
// do stuff here to create the ViewResult of the common Dropdowns
}
}
Примечание : некоторым людям не нравится этот подход, поскольку он не соответствует типичному разделению проблем MVC. Тем не менее, в некоторых случаях это может быть очень удобно.
Надеюсь, что один из этих подходов может помочь.