Passing multiple models in single view .



There are two different ways of doing this .
* Passing parent view that contains both the models which we want to pass in the view .
* passing each model in a ViewBag

we have two different models

public class Customer 
{
public int CustomerID {get; set;}
public string CustomerName {get; set;}
}

public class Product
{
public int ProductId {get; set ;}
public string ProductName{get; set ;}
}


1. By passing a parent view

Here we want to pass both the models in a single view , by default the razor engine only accepts single model per view.
so we need to create a parent view that hold both the models.


public class ParentView
{
public Customer customer{get; set;}
public Product product{get ; set;}
}



then we can call the model in the view by using the following code
in view page :


@model iEmumerable <models.ParentView>

ForEach(var v in ParentView)
{
< option > @v.customer.CustomerID < / option >
< option > @v.customer.CustomerName <  / option >
< option > @v.product.ProductId < / option >
< option > @v.product.ProductName < / option >

}



thus we cann have two different modles in Single view.
we can have more that twpo models also by this method.

2. Using ViewBag


here we can place the content of model lists in the view bag


public ViewResult GetDetails()
{
ViewBag.Customer  = _repository.getCustomer() ; // basically _repository is a class from where the data is being fetched from the database
ViewBag.Product =_repository.getProducts(); // Here we are fetching the procts fromt he database using the same _repository class
return View();
}


Now we will present this data on the view using these ViewBags.



View.cshtml

Customer Details
@ (var v in ViewBag.Customer as models.Customer)
{


}
Product details
@ (var p in ViewBag.Customer as models.Customer)
{


}





Comments

Popular posts from this blog

Inserting Data using EF with MVC4.

Power Apps Choice Column Default Value with connector as Sharepoint