«объект» не содержит определения «имя» - PullRequest
5 голосов
/ 21 апреля 2011

Я использую два объекта DataContext для возврата отдельных наборов данных AsQueriable (), а затем соединяю их с помощью linq.Построение данных работает отлично, однако, когда я передаю этот объединенный набор данных в представление, я получаю сообщение об ошибке «объект» не содержит определения «Имя».

Во время сеанса отладки я ясно вижу, чтои родительская Модель, и каждый «элемент» в цикле foreach имеют все данные и ключи видимые / доступные.Я очень смущен.

Многие другие вопросы и ответы на stackoverflow.com, которые соответствуют этой проблеме, не решают мою проблему и в результате будут благодарны за свежий взгляд и, надеюсь, решение этой проблемы.

Большое спасибо!- время кода:

Построение данных

        public ActionResult SplashImages()
        {
            var g = (from i in GetGallerySplash() join o in GetFestivals() on i.Festival equals o.ID orderby i.Rating descending select new {i.Photo, i.OwnedBy, i.Rating, o.Name });
            Response.ContentType = "text/xml";
            return View(g);
        }

        private IEnumerable<Gallery> GetGallerySplash()
        {
            GallerysDataContext gdc = new GallerysDataContext();
            return (from i in gdc.Galleries orderby i.Rating descending select i).Take(15).AsQueryable();
        }

        private IEnumerable<Festival> GetFestivals()
        {
            FestivalsDataContext fdc = new FestivalsDataContext();
            return (from i in fdc.Festivals select i).AsQueryable();
        }

Экран ошибок VSExpress: Exception screenshot

Будем весьма признательны за любые рекомендации по решению.Спасибо!

C

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011

Я бы предложил вам создать одну модель для инкапсуляции обоих объектов IEnumerable, например

public class GalleryModel
{
    public IEnumerable<Gallery> Galleries { get; set }
    public IEnumerable<Festivals> Festivals { get; set; }
}

Затем строго введите вид, соответствующий модели

...Inherits="System.Web.Mvc.ViewPage<GalleryModel>"

Тогда в вашей модели вы можете безопасно ссылаться на каждый объект, например,

<% foreach (var t in Model.Galleries) ...
1 голос
/ 21 апреля 2011

Вы возвращаете анонимный тип для отображения в поле зрения, отсюда и проблемы. Посмотрите на эти вопросы:

Вы можете либо обернуть свой анонимный тип в реальный класс и использовать строго типизированное представление, либо поиграть с какой-нибудь динамической магией. Связанные вопросы охватывают эти темы.

0 голосов
/ 21 апреля 2011

Попробуйте изменить цикл for на:

<% foreach (dynamic t in Model) { %>

Использование var приводит к выводу типа t как object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...