Еще один простой вопрос ASP.NET MVC2 - ViewModels - PullRequest
1 голос
/ 20 ноября 2010

Это ViewModel:

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; }
    }
}

Позвольте мне объяснить это, я хочу захватить все из моей таблицы категорий. Затем я хочу передать его своему представлению, используя «строго типизированное представление». Это я заполнил мою новую ViewModel:

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

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

Затем я хочу перебрать мою таблицу в представлении: (Это было ошибкой).

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

Думаю, вы могли бы обобщить мою проблему как проблему итерации по списку в C #?

Ошибка выглядит следующим образом:

Невозможно преобразовать тип 'AfvClassifieds.Models.Category' в 'строку'

1 Ответ

3 голосов
/ 21 ноября 2010

Хорошо, так что вместо:

foreach (string categoryName in Model.Categories)

do:

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

или:

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

или даже лучше: используйте шаблоны отображения и никогда не пишитеодин foreach по вашему мнению:

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

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

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<AfvClassifieds.Models.Category>" %>
<div><%: Model.Name %></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...