2009-10-23 9 views
0

étrange erreur de transtypage: System.string -> weekmenu.SimpleTableASP.NET MVC: erreur Strange typecasing

Contrôleur

Function Index() As ActionResult 

    ViewData("ListFrontName") = WeekMenuRepository.ListFrontName() 
    ViewData("ListLastName") = WeekMenuRepository.ListLastName() 
    Return View() 

End Function 

WeekMenuRepository

Public Function ListFrontName() Implements IWeekMenuRepository.ListFrontName 

    Dim jow = From p In SimpleTable.SimpleTable Select p 
    Return jow 

End Function 

Voir

<% For Each item As SimpleTable In ViewData("ListFrontName")%> 

<p><%=item.SimpleName%></p> 

<%Next%> 

Quand je cours ceci me permet d'obtenir des choses comme prévu (j'obtiens une liste de noms)

Cependant si je change cela dans WeekMenuRepository j'obtiens une erreur de typecasting, pourquoi est-ce, qu'est-ce que je fais mal et comment puis-je le réparer?

WeekMenuRepository (changé)

=> Ajout: sélectionnez p.SimpleName

Public Function ListFrontName() Implements IWeekMenuRepository.ListFrontName 

    Dim jow = From p In SimpleTable.SimpleTable Select p.SimpleName 
    Return jow 

End Function 

Répondre

0

Parce que dans le second cas ViewData("ListFrontName") est plus IEnumerable<WhateverTheTypeOfSimpleTable> mais IEnumerable<string>

Pour résoudre ce problème changer votre boucle dans la vue:

<% For Each item As String In ViewData("ListFrontName")%> 
    <p><%=item%></p> 
<%Next%> 
0

Après votre changement, vous choisissez p.SimpleName explicitement au lieu de l'objet entier. Vous devez modifier votre point de vue comme suit:

<p><%= item %></p> 
+0

Bon sang ce une erreur stupide. Je suis nouveau à OO, asp et asp mvc: p, désolé les gars – kevinius

+0

Pas de problème ... c'est ce que nous sommes là pour. –