我有一个嵌套的转发器控件。这是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。我收到以下错误:
DataBinding:'GolfLessonSearch.Model.CityEntity'不包含 名为'DisciplineName'的属性。
这是因为它试图从子转发器获取“DisciplineName”但我希望它来自父转发器。我认为属性可能仍然在范围内,但似乎没有。有没有办法得到这个?
答案 0 :(得分:4)
如果您在DataItems后面的对象与您在转发器中表示它们时具有相同的父/子关系,则您始终可以完全限定属性名称,以便您的子转发器正在调用
DataBinder.Eval(Container.DataItem, "Parent.DisciplineName")
如果不是这种情况,我的直觉就是创建一个ViewModel对象(尽管它不是mvc)你的子对象假冒这种关系......
修改强>
请注意,当我说“Parent.DisciplineName”时,我的意思是用对象名称替换“Parent”...(我只符合条件,因为“Parent”是asp中许多其他地方的保留字。网...