3

У меня есть куча кнопок в стиле ссылок на протяжении всей моей веб-приложение:Используйте частичный вид для пользовательских MVC HTML управления

<a href="@Url.Action("Index", "Home")" class="btn btn-default btn-lg btn-right"> 
    <span class="glyphicon glyphicon-home"></span> 
    <h3>Store Home</h3> 
</a> 

Иногда они получают дополнительный тег, чтобы указать направление стрелки, или некоторые другие украшения:

<a href="@Url.Action("Payment", "Checkout")" class="btn btn-primary btn-lg btn-right"> 
    <h3><<</h3> 
    <span class="glyphicon glyphicon-credit-card"></span> 
    <h3>Back to Payment</h3> 
</a> 

Моим вопрос, а не забрасывать свою разметку с тонко различными вкусами этой кнопки копировать и вставить, уместно использовать частичный вид так, что знание о том, как сделать кнопку, и его различные ароматы все в одном месте? EDIT: для ясности я имею в виду частичный вид, не содержащий ничего, кроме разметки кнопок, и потенциально объект «модель кнопки» с различными настройками для представления.

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

+5

Я не вижу ничего плохого в использовании частичного представления, чтобы ваша разметка была последовательной и легче менялась. Вы также можете использовать пользовательские HTML-помощники для выполнения этого. – Joel

ответ

3

Я бы предпочел использовать специальный HTML-помощник, но с помощью частичного выделения общих функций, таких как этот, кажется, тоже подходит.

С настраиваемого помощником вашего код может выглядеть следующим образом:

@Html.MySuperButton("Store Home", "Index", "Home") 

или:

@Html.MySuperButton("Back to Payment", "Payment", "Checkout", "<") 

Во всех случаях, если вы повторять общие функциональные возможности, было бы лучше, чтобы инкапсулировать его в многоразовый помощник. Для таких небольших частей HTML пользовательский помощник кажется наиболее подходящим решением.

+1

Пользовательский помощник может внутренне просто возвращать 'string Partial()' или 'void RenderPartial()' также. Лучшее из обоих миров, если частичное имя изменяется, то только обновление находится в 1 или 2 вспомогательных методах вместо gobs cshtml. –

+0

Лично, если я пишу пользовательский HTML-помощник (что я и делал бы в этой ситуации), я, вероятно, не свяжу его с определенным синтаксисом механизма просмотра, содержащимся в частичном. Поскольку это всего лишь небольшая часть разметки, я предпочел бы использовать «TagBuilder» в моем помощнике для генерации желаемого результата на основе входных параметров. Затем я смогу повторно использовать мои помощники в любых приложениях MVC, используя различные механизмы просмотра, такие как WebForms, Razor, ... –

+0

Мы, вероятно, будем придерживаться Razor, но это полезно знать! – jtheis

Смежные вопросы