Управление повторителем ASP.NET с помощью вложенных повторителей - PullRequest
3 голосов
/ 04 января 2012

У меня есть вложенный элемент управления повторителем. Вот как выглядит HTML:

<ItemTemplate>
    <div class="boxLeft">
        <h4><%# DataBinder.Eval(Container.DataItem, "DisciplineName") %></h4><asp:Label runat="server" ID="lblDisciplineID" Visible="false" Text='<%# DataBinder.Eval(Container.DataItem, "DisciplineID") %>'></asp:Label>
        <p><%# DataBinder.Eval(Container.DataItem, "DisciplineNarrative") %></p>
        <h5 class="articles"><%# DataBinder.Eval(Container.DataItem, "InstructorCount")%> instructors</h5>
        <ul>
            <asp:Repeater runat="server" ID="rptRegions">
                <ItemTemplate>
                    <li><a href='/Lessons/<%# DataBinder.Eval(Container.DataItem, "DisciplineName") %>/<%# DataBinder.Eval(Container.DataItem, "CityName") %>'><%# DataBinder.Eval(Container.DataItem, "CityName") %></a></li>
                </ItemTemplate>
            </asp:Repeater>
        </ul>
    </div>
</ItemTemplate>

Как видите, я хочу получить доступ к родительскому свойству DisciplineName из родительского повторителя в моем дочернем повторителе, чтобы построить URL. Я получаю следующую ошибку:

Привязка данных: 'GolfLessonSearch.Model.CityEntity' не содержит свойство с именем «DisciplineName».

Это потому, что он пытается получить "DisciplineName" от дочернего повторителя, но я хочу его от родительского повторителя. Я думал, что свойства все еще могут быть в области, но это не так. Есть ли способ получить это?

1 Ответ

4 голосов
/ 04 января 2012

Если объекты позади ваших DataItems имеют те же отношения родитель / потомок, что и вы, пытаясь представить их в ретрансляторе, вы всегда можете полностью указать имя свойства, чтобы ваш дочерний ретранслятор вызывал

DataBinder.Eval(Container.DataItem, "Parent.DisciplineName")

Если это не так, моя идея - создать объект ViewModel (даже если это не mvc) вашего дочернего объекта, чтобы имитировать эти отношения ...

EDIT

Просто обратите внимание, что когда я сказал «Parent.DisciplineName», я имел в виду заменить «Родитель» на имя объекта ... (Я квалифицируюсь только потому, что «Родитель» является зарезервированным словом во многих других местах вasp.net ...

...