I have a List<> binded with some data in Controller action and I want to pass that List<> to View to bind with DataGrid in Razor View.
I am new to MVC.Can any one help me how to pass and how to access in View.
You can use for this: 1 - Using View() , 2 - Using ViewData , 3 - Using ViewBag , 4 - Using your custom class , and 5 - Some combinations of those approaches.
The other way of passing the data from Controller to View can be by passing an object of the model class to the View. Erase the code of ViewData and pass the object of model class in return view. Import the binding object of model class at the top of Index View and access the properties by @Model.
Passing data to view is simple as passing object to method. Take a look at Controller.View Method
protected internal ViewResult View( Object model )
Something like this
//controller List<MyObject> list = new List<MyObject>(); return View(list); //view @model List<MyObject> // and property Model is type of List<MyObject> @foreach(var item in Model) { <span>@item.Name</span> }
I did this;
In controller:
public ActionResult Index() { var invoices = db.Invoices; var categories = db.Categories.ToList(); ViewData["MyData"] = categories; // Send this list to the view return View(invoices.ToList()); }
In view:
@model IEnumerable<abc.Models.Invoice> @{ ViewBag.Title = "Invoices"; } @{ var categories = (List<Category>) ViewData["MyData"]; // Cast the list } @foreach (var c in @categories) // Print the list { @Html.Label(c.Name); } <table> ... @foreach (var item in Model) { ... } </table>
Hope it helps
You can use the dynamic object ViewBag
to pass data from Controllers to Views.
Add the following to your controller:
ViewBag.MyList = myList;
Then you can acces it from your view:
@ViewBag.MyList
// e.g.
@foreach (var item in ViewBag.MyList) { ... }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With