1

我在我的 ASP.net MVC 项目中创建了一个模型:

public class ProductListingModels:ItemEntityDataContext
{
  public int ID { get; set; }
  public string Name { get; set; }
  public int DepartmentID { get; set; }
  public int BrandID { get; set; }
 }

我有一个控制器:

public class ProductListingController : Controller
{
   // GET: /ProductListing/
   public JsonResult Index(string depID)
   {
   Context DataContext = new Context();
   JsonResult jr = new JsonResult();
   int dep = Convert.ToInt32(depID);
   var ien_item =   from i in DataContext.DataContext.Items
        join c in DataContext.DataContext.Categories on i.CategoryID equals c.ID
        join d in DataContext.DataContext.Departments on i.DepartmentID equals d.ID
        join brand in DataContext.DataContext.Brands on i.BrandID equals brand.ID
        orderby i.LastUpdated descending
        where i.DepartmentID == dep && i.Active > 0 && i.WebsiteShow > 0 && c.Active > 0 

                    select i;

     List<ProductListingModels> prom = new List<ProductListingModels>();
     //
     //Adding ien_item to the prom
     //
     jr.Data = prom;
         jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
         return jr;
   }
}
public class Context : ICEWeb.Models.ItemEntityDataContext
{

}

我想将我通过 linq (ien_item) 从数据库查询的每个数据添加到 ProductListingModel(prom object) 的对象中,然后将其作为 json 返回到我的视图中。

谁能给我一些想法。

非常感谢。

4

1 回答 1

1

首先,您的模型不应该从数据上下文继承。将整个上下文传递给视图严重违反了 MVC 基础的关注点分离。其次,您应该简单地选择视图类型的元素,然后在结果上调用 ToList()。

var model = (from i in DataContext.DataContext.Items
             join c in DataContext.DataContext.Categories on i.CategoryID equals c.ID
             join d in DataContext.DataContext.Departments on i.DepartmentID equals d.ID
             join brand in DataContext.DataContext.Brands on i.BrandID equals brand.ID
             orderby i.LastUpdated descending
             where i.DepartmentID == dep && i.Active > 0 && i.WebsiteShow > 0 && c.Active > 0 
             select new ProductListingModels
             {
                 ID = i.ID,
                 Name = i.Name,
                 ...
             }).ToList();

然后只需使用 Json() 便捷方法返回数据,而不是构建您自己的响应。

 return Json( model, JsonRequestBehavior.AllowGet );
于 2012-04-19T01:28:50.713 回答