blumonde - Ответов: 1

Как получить доступ к очереди сбора данных<T & gt;, передаваемой от контроллера к представлению в MVC


Привет,

Ниже приведен класс в моих моделях
public class LuceneSearchConfig
{
  public SearchResultObject getResults;

      public class SearchResultObject 
        {
            public Queue<List<string>> data { get; set; }
        }
}

---------------------------------
Ниже приведен мой контроллер:
test actionresult run()
{
  DCS.getResults = new LuceneSearchConfig.SearchResultObject();

DCS.getResults = DCS.SearchIndexWithTermQuery(xsearchtext, xtmmodel, 5);

 return PartialView("DocSearchResults", DCS.getResults);
}

---------------------------------
Ниже приведен мой взгляд: (он не откроется из-за неправильного типа данных). Пожалуйста, смотрите сообщение об ошибке ниже.)
@model IEnumerable<nowmvc.models.lucenesearchconfig.searchresultobject>

@foreach (var item in Model)
 {
// reading @item.data
}

Пожалуйста, помогите мне, как отправить правильный тип на экран просмотра. Спасибо.

Что я уже пробовал:

Я попытался преобразовать его в массив, но это не сработает. Я также попытался привести "DCS. getResults" как IEnumerable и получил ошибки ниже:

Цитата:
Элемент модели, передаваемый в словарь, имеет тип ' System.Коллекции.Универсальный.Очереди`1+Перечислитель[Система.Коллекции.Универсальный.Список`1[Система.String]]', но для этого словаря требуется элемент модели типа ' System.Коллекции.Общий.IEnumerable`1

1 Ответов

Рейтинг:
11

Graeme_Grant

Вот рабочий макет того, что вы пытаетесь сделать:

1. Модель

using System.Collections.Generic;

namespace MvcQueue.Models
{
    public class DataModel
    {
        public Queue<List<string>> Data { get; set; } 
            = new Queue<List<string>>();
    }
}
2. Контроллер:
using MvcQueue.Models;
using System.Collections.Generic;
using System.Web.Mvc;

namespace MvcQueue.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var results = new DataModel();
            for (int i = 0; i < 10; i++)
            {
                results.Data.Enqueue(new List<string>() { "aaa", "bbb", "ccc" });
            }
            return View(results.Data);
        }
    }
}
3. Смотреть:
@{
    ViewBag.Title = "Queue Data Test";
}
<div>
    @foreach (var item in Model)
    {
        <p> data: 
        @string.Join(", ", item);
        </p>
    }
</div>
Если вам нужно объявить Model по мнению:
@Model = IEnumerable<List<string>>;


blumonde -

Грэм, спасибо. Теперь это работает.