MVC - Как лучше всего организовать часто используемые выпадающие списки во многих представлениях - PullRequest
5 голосов
/ 08 января 2010

Я пытаюсь понять, как лучше организовать некоторые распространенные выпадающие списки, используемые в нескольких представлениях (некоторые каскадные)

Лучше ли создавать один \ Models \ CommonQueries затем создайте веб-сервис для каждого раскрывающегося списка, используемого в каскадной ситуации затем иметь один контроллер, который содержит действия для каждого раскрывающегося списка

Таким образом, я могу следовать принципу СУХОЙ и не повторять выпадающую логику, поскольку они используются в различных представлениях.

Большое спасибо и привет за то, что прочитали мой вопрос и нашли время. + Аб

1 Ответ

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

Когда вы говорите, что ваши раскрывающиеся списки используются в нескольких представлениях, вы все еще рассматриваете эти раскрывающиеся списки как часть представления, которое их отображает? Если это так, я думаю, что использование пользовательского помощника 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. Тем не менее, в некоторых случаях это может быть очень удобно.

Надеюсь, что один из этих подходов может помочь.

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