2010-10-06 91 views
0

我有这个代码可以工作。显示使用asp.net MVC2查看两个查询的结果

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

你需要创建一个具有以下paramters一个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

DevDave,我试图实现这个代码,我得到一个错误。将其添加到工作编辑下的问题。谢谢 – 2010-10-26 18:07:29

+0

Joshua,我的代码中有一个错误。请注意,该模型现在为每个变量而不是列表引用IQueryable。这应该可以解决你的问题。 – DevDave 2010-10-26 22:11:40

0

创建一个特殊对象,其中包含查询返回的两个类型的项目。然后,您可以在View中使用Model.depot和Model.Address访问它们。

+0

我不知道该怎么做 – 2010-10-06 14:05:48

+0

你不知道查询返回的类型吗? – 2010-10-06 14:13:50

+0

不,我不知道。我正在查询表格并通过用户在网页上输入的ID号码过滤它们。 – 2010-10-06 14:15:12