ASP.NET MVC MODEL - передача объединений, созданных на моделях, в контроллеры и представления с помощью скаффолда - PullRequest
2 голосов
/ 29 сентября 2010

это так: ASP.NET MVC C #

Модель: я хотел бы использовать информацию, определенную в трех таблицах: Продукт - Детали - Изображения. Я создал ProductRepository и определил объединение трех таблиц. Наконец я выбираю поля из каждой из этих таблиц.

    public IQueryable ProductsList()
    {
        var db = new Entities();
        var results = from p in db.Products
                    join pi in db.ProductPic on p.ProductId equals pi.ProductId
                    // first join
                    join pv in db.ProductDetails on p.ProductId equals pv.ProductId
                    // second join
                    select new
                               {
                                   p.Name,
                                   p.Description,
                                   p.PCategory,
                                   p.ProductPicture,
                                   pv.Price,
                                   pi.Picture,
                               };
        return (results);
    }

Контроллер: я определил:

    public ActionResult Index()
    {
        var products = productrepository.ProductsList();
        if (products == null) throw new NotImplementedException();
        else
        return View("Index", products);
    }

Представления. Я создал строго типизированное представление из модели Products.

Когда я создавал представление, я получал только поля из таблицы Product, но не поля из таблицы Details и Picture.

Мой главный вопрос заключается в том, как нужно создать представление, чтобы использовать все поля, определенные в модели (в данном случае = productrepository.productslist (); в этот момент, когда я непосредственно создаю леса, я получаю только поля из продукта, используя строго типизированный с продуктом.

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Вы строго ввели свой вид в тип продукта, но ваш запрос EF возвращает анонимный тип, который включает в себя другие поля. Создайте класс для модели представления продукта:

class ProductViewModel
{
    public string Name { get; set; }
    public string Description{ get; set; }
    public string PCategory{ get; set; }
    public string ProductPicture{ get; set; }
    public string Price { get; set; }
    public string Picture { get; set; }
}

Затем в поле выбора вашего запроса EF укажите этот тип, а не анонимный. Кроме того, вы должны самостоятельно проверить, что ваш запрос EF возвращает ожидаемые результаты.

1 голос
/ 29 сентября 2010

Возможно, вы захотите вернуть именованный тип из ProductsList () вместо анонимного. Затем вы можете использовать это имя типа в вашем представлении.

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