Репитер, заполненный из списка <MyClass>, как мне получить класс в веб-форме? - PullRequest
0 голосов
/ 06 февраля 2012

В моем коде позади я заполняю ретранслятор этим классом:

public class Reference
{
    public string PageType;
    public string Url;
    public string Name;
}

И этот код:

var NewReference = new Reference();
NewReference.Name = "Hello World"
TheList.Add(NewReference);
TheRepeater.DataSource = TheList;
TheRepeater.DataBind();

Как мне получить "Name", "PageType" и "URL "в веб-форме?

Я пробовал:

<%# Eval("Name") %>

Без удачи ...

Ответы [ 3 ]

0 голосов
/ 07 февраля 2012

Вы можете попробовать

<%# Container.DataItem.Name %>

Где «Имя» - это параметр в объекте, на который вы ссылаетесь. Это предполагает ваше перечисление в самом ретрансляторе.

0 голосов
/ 07 февраля 2012

, если вы собираетесь обрабатывать событие ItemDataBound,

вы можете привести dataitem к типу Reference и получить доступ к своим свойствам

var myItem = e.Item.DataItem as Reference;
var youAreLookingFor1 = myItem.Name;
var youAreLookingFor2 = myItem.Url;
var youAreLookingFor3 = myItem.PageType;

В противном случае вы можете получить к нему доступ в конструкторе

Обновление !!!!

 <%# DataBinder.Eval(e.Item.DataItem, "Name") %> 

Вы также должны быть в состоянии использовать

<%# Eval("propertyName") %> 

Надеюсь, это поможет.

0 голосов
/ 07 февраля 2012

В качестве первого шага - убедитесь, что код, который заполняет DataSource, выполняется (просто поставьте точку останова).

Попробуйте поместить его в метку

<asp:Label runat="server">
    <%# Eval("Name") %>
</asp:Label>

Также вы можете добавить большеформатирование при необходимости

<asp:Label runat="server">
    <%# String.Format("Name = {0}", Eval("Name")) %> 
</asp:Label>

Подробнее см. MSDN Обзор выражений привязки данных

...