Reputation: 2642
I created one model in my ASP.net MVC Project :
public class ProductListingModels:ItemEntityDataContext
{
public int ID { get; set; }
public string Name { get; set; }
public int DepartmentID { get; set; }
public int BrandID { get; set; }
}
And I have one controller :
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
{
}
I want to add each data that I have query from database by linq (ien_item) to the object of ProductListingModel(prom object), and then return it as the json to my view.
Could anyone give me some ideas please.
Thanks so much.
Upvotes: 1
Views: 2881
Reputation: 532515
First, your model shouldn't be inheriting from the data context. Passing your entire context to the view seriously violates the separation of concerns that is fundamental to MVC. Second, you should simply select into elements of the view type, then call ToList() on the result.
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();
Then simply return the data using the Json() convenience method rather than constructing your own response.
return Json( model, JsonRequestBehavior.AllowGet );
Upvotes: 1