How to pass List from Controller to View in MVC 3

后端 未结 4 941
隐瞒了意图╮
隐瞒了意图╮ 2020-12-14 15:17

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

相关标签:
4条回答
  • 2020-12-14 15:46
    1. Create a model which contains your list and other things you need for the view.

      For example:

      public class MyModel
      {
          public List<string> _MyList { get; set; }
      }
      
    2. From the action method put your desired list to the Model, _MyList property, like:

      public ActionResult ArticleList(MyModel model)
      {
          model._MyList = new List<string>{"item1","item2","item3"};
          return PartialView(@"~/Views/Home/MyView.cshtml", model);
      }
      
    3. In your view access the model as follows

      @model MyModel
      foreach (var item in Model)
      {
         <div>@item</div>
      }
      

    I think it will help for start.

    0 讨论(0)
  • 2020-12-14 16:00

    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>
    }
    
    0 讨论(0)
  • 2020-12-14 16:02

    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

    0 讨论(0)
  • 2020-12-14 16:07

    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) { ... }
    
    0 讨论(0)
提交回复
热议问题