Показать результаты двух запросов в представлении, используя asp.net MVC2 - PullRequest
0 голосов
/ 06 октября 2010

У меня есть этот код, который работает.

public class HelloWorldController : Controller
{
    UAStagingEntities db = new UAStagingEntities();

    public ActionResult Index(int? id)
    {
        var depot = db.CSLA_DEPOT.Where(c => c.DEPOT_ID == id.Value);

        return View(depot.ToList());
     }

}

Что я не знаю, как сделать, это отобразить представление с результатами двух запросов. Как бы я создал представление для отображения как депо, так и адреса? и как бы я закодировал оператор возврата?

public class HelloWorldController : Controller
{
    UAStagingEntities db = new UAStagingEntities();

    public ActionResult Index(int? id)
    {
         var depot = db.CSLA_DEPOT.Where(c => c.DEPOT_ID == id.Value);
         var Address = db.CSLA_ADDRESS.Where(a => a.CSLA_DEPOT.DEPOT_ID == id.Value);

         return View(depot.ToList());
    }
}

РЕДАКТИРОВАТЬ *

Я добавил эту модель

    namespace CustomerCareMVC.Models
{
    public class CSLA_StagingModel

    {

        public List<CSLA_DEPOT> depots { get; set; }
        public List<CSLA_ADDRESS> addresses { get; set; }

    }

}

И добавил этот метод в контроллер

    public ActionResult ShowAllTables() 
    {


        var model = new CSLA_StagingModel()
        {

            depots = db.CSLA_DEPOT.Where(c => c.DEPOT_ID == 10065),
            addresses = db.CSLA_ADDRESS.Where(a => a.CSLA_DEPOT.DEPOT_ID == 10065),
        };


        return View(model);

    }

Я получаю волнистую линию под этими двумя линиями

            depots = db.CSLA_DEPOT.Where(c => c.DEPOT_ID == 10065),
            addresses = db.CSLA_ADDRESS.Where(a => a.CSLA_DEPOT.DEPOT_ID == 10065),

с этим сообщением об ошибке

Ошибка 1 Не удается неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Collections.Generic.List'. Существует явное преобразование (вам не хватает приведения?) C: \ CustCareMVC \ CustomerCareMVC \ CustomerCareMVC \ Controllers \ HelloWorldController.cs 59 26 CustomerCareMVC

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Вам потребуется создать ViewModel со следующими параметрами:

public IQueryable<CSLA_DEPOT> depots {get; set;}
public IQueryable<CSLA_ADDRESS> addresses {get; set;}

Затем вам нужно будет создать экземпляр этой новой модели представления в вашем контроллере следующим образом:

var model = new ViewModelName(){
    depots = db.CSLA_DEPOT.Where(c => c.DEPOT_ID == id.Value),
    addresses = db.CSLA_ADDRESS.Where(a => a.CSLA_DEPOT.DEPOT_ID == id.Value),
};

Затем вам нужно будет передать эту модель вашему представлению так:

return View(model);

По вашему мнению, вы получите доступ к двум разным коллекциям следующим образом:

Model.depots
Model.addresses

Надеюсь, это поможет, оставьте мне комментарий, если у вас есть какие-либо вопросы.

0 голосов
/ 06 октября 2010

Создайте специальный объект, который содержит два элемента типов, возвращаемых вашими запросами. Затем вы можете получить к ним доступ с помощью Model.depot и Model.Address в своем представлении.

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