asp.net - How can I manually add another model to view? -


when created view called products specified model product trough view generator window , used model show products database

@foreach (var item in model)     {         <div class="col-md-3 col-sm-3 col-column productbox">             <img src="@url.content(item.productimg)" class="img-responsive" >             <div class="producttitle">@html.displayfor(modelitem => item.productname)</div>             <div class="producttitle">@html.displayfor(modelitem => item.productdesc)</div>             <div class="productprice"><div class="pull-right"><a href="#" class="btn btn-danger btn-sm" role="button">buy</a></div><div class="pricetext">@html.displayfor(modelitem => item.productprice)</div></div>         </div>      } 

now want generate list of categories database on same view actionlinks when user clicks, show products category ...something

<div class="col-md-2">     <ul>  @foreach (var item in model) {     <li>         @html.actionlink(@html.displayfor(modelitem => item.categoryname).tostring(),"products",new { controller="home",action="products",id=modelitem=>item.categoryid})     </li>  }     </ul> </div> 

but need include somehow model of category in view included product

@model ienumerable<onlineprodajaslika.models.product> 

i mvc newbie , cant figure out ,any appreciated

i think you're after view model has 1 or more properties, like:

public class productsviewmodel {     // property hold products     public ienumerable<product> products { get; set; }      // property hold category details     public ienumerable<category> categories { get; set; } }  public class category {     public string categoryname { get; set; } }  public class product {     public string productname { get; set; } } 

then can populate these details within controller action , return model:

public mycontroller : controller {     public actionresult productspage()     {         var viewmodel = new productsviewmodel         {             products = new list<product>(),             categories = new list<category>()         };          // populate products         viewmodel.products.add(new product { productname = "product 1" });         viewmodel.products.add(new product { productname = "product 2" });          // populate categories on same view model         viewmodel.categories.add(new category { categoryname = "category 1" });         viewmodel.categories.add(new category { categoryname = "category 2" });          // return view model of details         return view(viewmodel);     } } 

then define view model in view , loop data:

@model productsviewmodel  @* loop products in model *@ @foreach(var product in model.products) {     <div>@product.productname</div> }  @* loop categories in model *@ @foreach (var category in model.categories) {     <div>@category.categoryname</div> } 

Comments