如何在MVC 3中将List从Controller传递给View

时间:2012-06-12 10:28:27

标签: asp.net-mvc asp.net-mvc-3 razor

我有一个List<>与Controller动作中的一些数据绑定,我想传递该列表<>在Razor View中查看与DataGrid绑定。

我是MVC的新手。任何人都可以帮助我在View中传递和如何访问。

4 个答案:

答案 0 :(得分:43)

将数据传递给视图很简单,因为将对象传递给方法。看一眼 Controller.View Method

protected internal ViewResult View(
    Object model
)

像这样的东西

//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>
}

答案 1 :(得分:9)

我这样做了;

在控制器中:

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());
}

在视图中:

@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>

希望有所帮助

答案 2 :(得分:6)

您可以使用动态对象ViewBag将数据从控制器传递到视图。

将以下内容添加到您的控制器:

ViewBag.MyList = myList;

然后您可以从视图中访问它:

@ViewBag.MyList

// e.g.
@foreach (var item in ViewBag.MyList) { ... }

答案 3 :(得分:3)

  1. 创建一个模型,其中包含您的列表以及视图所需的其他内容。

    例如:

    public class MyModel
    {
        public List<string> _MyList { get; set; }
    }
    
  2. 从action方法中将您想要的列表放到Model _MyList属性中,如:

    public ActionResult ArticleList(MyModel model)
    {
        model._MyList = new List<string>{"item1","item2","item3"};
        return PartialView(@"~/Views/Home/MyView.cshtml", model);
    }
    
  3. 在您的视图中访问模型如下

    @model MyModel
    foreach (var item in Model)
    {
       <div>@item</div>
    }
    
  4. 我认为这将有助于开始。