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
Post a Comment