2012-02-16 2 views
0

У меня есть базовый ретранслятор, как например:Повторитель привязки данных к списку <T> - не можете найти объект T?

<asp:Repeater id="BlogDisplay" runat="server"> 
    <HeaderTemplate> 
     <table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td valign="top" align="left" style="font-weight:bold; padding-left:3px;"> 
       <%# DataBinder.Eval(Container.DataItem, "Title")%> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 

</asp:Repeater> 

Когда я выполняю код, который я получаю исключение: DataBinding: 'DocumentWebParts.BlogPostLost.BlogItem' does not contain a property with the name 'Title'.

This upsets me

Таким образом, вы, вероятно, думая, что мой объект BlogItem не имеют свойство Title - но это не тот случай!

public class BlogItem 
{ 
    public int Id; 
    public string Body; 
    public string Title; 
    public string Author; 
    public DateTime Published; 
} 

И свойство, безусловно, установлено - бросание точки останова показывает, что все значения установлены.

BlogItems = new List<BlogItem>(); 
SPListItem item; 
foreach (SPListItem i in myItems) 
      { 
       //off-topic code hidden 

       BlogItem b = new BlogItem(); 
       b.Id = Id; 
       b.Body = Body; 
       b.Author = Author; 
       b.Title = Title; 
       b.Published = Published; 
       BlogItems.Add(b); 
      } 
      BlogItems = BlogItems.OrderByDescending(x => x.Id).ToList(); 
      BlogDisplay.DataSource = BlogItems; 
      BlogDisplay.DataBind(); 

Таким образом, в свете всего этого, почему я получаю вышеуказанное исключение, когда я использую DataBinder.Eval(Container.DataItem, "Title") в повторителе?

ответ

9

Изменение BlogItem к этому:

public class BlogItem 
{ 
    public int Id { get; set; } 
    public string Body { get; set; } 
    public string Title { get; set; } 
    public string Author { get; set; } 
    public DateTime Published { get; set; } 
} 

Вы используете поля; он ожидает свойств.

+0

Gawd, я не могу поверить, что пропустил это. Благодарю. – splatto

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