2010-11-20 4 views
1

C'est le ViewModel:simple, ASP.NET MVC2 Question - ViewModels

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using AfvClassifieds.Models; 

namespace AfvClassifieds.ViewModels 
{ 
    public class ClassifiedsIndexViewModel 
    { 
     public List<Category> Categories { get; set; } 
    } 
} 

Laissez-moi vous expliquer celui-ci, je veux saisir tout de ma table de catégorie. Je veux ensuite passer à mon avis en utilisant une "vue fortement typée". Ce que je remplir ma nouvelle ViewModel:

// Retrieve the categories table from the database. 
      var categoryModel = AfvClassifiedsDB.Categories.ToList(); 

      // Set up our ViewModel 
      var viewModel = new ClassifiedsIndexViewModel() 
      { 
       Categories = categoryModel, 
      }; 

Ensuite, je veux itérer ma table dans la vue: (ce qui est était le mal tourné).

<% 
     foreach (string categoryName in Model.Categories) 
     { 
     %> 

Je pense que vous pourriez résumer mon problème comme une question de itérer une liste en C#?

L'erreur est comme suit:

Impossible de convertir le type 'AfvClassifieds.Models.Category' à 'string'

+0

Qu'est-ce qui ne va pas? Je ne comprends rien à votre question. Quel problème itératif? Qu'essayez-vous de faire? Cela ne ressemble en rien à un modèle de vue si vous voulez y déposer votre base de données. –

+0

Hey Darin, Ont ajouté une erreur. – JHarley1

+0

Quelle chaîne exactement. Arrêtez d'utiliser les variables dans les exemples de code. Nous ne sommes pas des compilateurs. –

Répondre

3

Ok donc au lieu de:

foreach (string categoryName in Model.Categories) 

faire:

<% foreach (var category in Model.Categories) { %> 
    <div><%: category.Name %></div> 
<% } %> 

ou:

<% foreach (Category category in Model.Categories) { %> 
    <div><%: category.Name %></div> 
<% } %> 

ou mieux encore: utiliser des modèles d'affichage et de ne jamais écrire un foreach unique dans votre vue:

<%: Html.DisplayFor(x => x.Categories) %> 

et ~/Views/YourControllerName/DisplayTemplates/Category.ascx:

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<AfvClassifieds.Models.Category>" %> 
<div><%: Model.Name %></div> 
+0

vous êtes trop rapide –

+0

Légende merci Darin! +++++++ – JHarley1

+0

@ JHarley1, la prochaine fois, incluez le message d'erreur que vous obtenez. Cela rend les choses claires à première vue. N'oubliez pas non plus la coche verte si cette réponse vous a été utile. –