Вопрос

Вот способ, которым мы в настоящее время выдаем нашему представлению некоторый HTML.

            foreach (var reportGroup in managedReportGroup.CustomerTags)
            { %>

                <%= reportGroup.Name %>

                <%
            }

Есть ли что-нибудь, что я могу сделать подобным образом?(Это не сработает для меня)

        Action<ManagedReportGroups> handlesReportGroup = delegate(ManagedReportGroups managedReportGroup)
        {
            foreach (var reportGroup in managedReportGroup.CustomerTags)
            {
                Html.Encode(reportGroup.Name);                    
            }
        };  

Причина в том, чтобы сократить количество скобок-аллигаторов и очистить мой код.

Спасибо,

Майк

Это было полезно?

Решение

Если вы переместите его в частичные представления, вам все равно придется выполнять цикл внутри частичного представления.

Вы могли бы создать собственные методы расширения Html, если бы вы действительно были настроены против своего первого примера.

Или, если ваша главная цель действительно состоит в том, чтобы уменьшить количество «крокодилов», вы можете сократить их до двух, если сделаете это следующим образом:

<%
    foreach (var reportGroup in managedReportGroup.CustomerTags)
    {
        Response.Write(reportGroup.Name)
    }
%>

Вы также можете рассмотреть возможность Механизм просмотра Spark

Другие советы

Почему бы не использовать PartialViews?

foreach (var reportGroup in managedReportGroup.CustomerTags)
            { %>

                <% Html.RenderPartial("NamePartialView", reportGroup.Name) %>

            }

Тогда ваше частичное представление сможет отобразить имя.

Это более эффективно, когда вы передаете reportGroup в PartialView и позволяете partialView затем либо записать весь HTML, либо вызвать дополнительные PartialViews, каждый из которых выполняет рендеринг на более атомарном уровне.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top