MVC Partials против пользовательских элементов управления? - PullRequest
3 голосов
/ 17 февраля 2012

Я пытаюсь понять, что эквивалент пользовательского элемента управления в приложении MVC? Из того, что я понимаю, это частично. Проблема, которую я обнаружил, заключается в том, что при использовании пользовательского элемента управления я могу инкапсулировать логику в этом элементе управления и повторно использовать ее на нескольких страницах, не беспокоясь о родительской странице.

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

Означает ли это, что для любой страницы, которая может использовать частичное, контроллер всегда должен будет возвращать данные для частичного на тот случай, если это потребуется? Разве это не кажется невероятно неэффективным? Кажется, я не могу понять, как это работает ...

1 Ответ

1 голос
/ 17 февраля 2012

Вы можете добавить логику, используя синтаксис бритвы.Например, вы можете использовать условные операторы для манипулирования окончательным выводом.

@{ 
    if(whatever == true) 
    {
       <p>Whatever is true</p>
    }
    else
    {
       <span id="someId">
           <label for="enterName">Enter name:</label> <input type="text" id="enterName" />
       </span>
    }
}

В дополнение к этому вы можете использовать синтаксис @helper, такой как

@helper MakeLink(dynamic id)
{
    <div id="actionButtons">
        @Html.ActionLink("Some Title", "Some Action", new {id = id}) |
        @Html.ActionLink("Another Title", "Another Action", "Some Controller", new {id = id})
    </div>
}

Логика в партиалах немного отличаетсяк тому, к чему вы привыкли в пользовательских элементах управления Web Forms.Вышеприведенную логику можно поместить в частичное, чтобы вы могли использовать его позже, вам просто нужно поместить его в / Views / Shared / DisplayTemplates или EditorTemplates.

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