2008-12-23 6 views
0

J'ai suivi le billet écrit par Steve Sanderson au blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc. Tout fonctionne bien quand on le suit exactement mais j'espérais que quelqu'un l'aurait regardé et pourrait m'aider à l'adapter légèrement."Demande partielle" de Steve Sanderson

J'ai fondamentalement cette "demande partielle" appelant d'un contrôleur à l'autre et cela fonctionne très bien. Je veux ensuite foreach à travers les données et créer une liste déroulante. Le problème est que j'ai besoin de le convertir en IEnumerable pour le faire mais il échoue en me disant que je ne peux pas convertir un void en IEnumerable.

Le lkine échoue sur est dans la vue et est:

foreach (var category in (IEnumerable<MyObject>) ((PartialRequest)ViewData["ReturnedData"]).Invoke(ViewContext)) 

De toute évidence, savoir comment répondre à cela est difficile sans voir le code. Tout est dans le message mentionné ci-dessus, mais comme il est raisonnablement long, je ne veux pas tout afficher ici. Je comprends que cela rend la réponse difficile et j'espère que quelqu'un a préparé ce poste et peut aider.

Merci d'avance.

Répondre

3

La méthode Invocation partielle demande ne renvoie rien, elle écrit le code HTML que la requête génère dans la réponse. L'idée est que vous pouvez appeler une action de contrôleur qui rend un contrôle utilisateur MVC View plutôt qu'une vue. Vous pouvez faire une requête partielle à cette action du contrôleur et lui faire rendre le contrôle directement dans le flux de réponse plutôt que d'utiliser le Html.RenderPartial. Comme le contrôle écrit directement dans la réponse, vous n'avez aucune chance d'interagir avec sa sortie.