35

我有一个 List<> 与 Controller 操作中的一些数据绑定,我想将该 List<> 传递给 View 以与 Razor View 中的 DataGrid 绑定。

我是 MVC 的新手。任何人都可以帮助我如何通过以及如何在 View 中访问。

4

4 回答 4

50

将数据传递给视图就像将对象传递给方法一样简单。看看 Controller.View 方法

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>
}
于 2012-06-12T10:36:23.373 回答
13

我这样做了;

在控制器中:

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>

希望能帮助到你

于 2015-04-08T05:51:13.653 回答
9

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

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

ViewBag.MyList = myList;

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

@ViewBag.MyList

// e.g.
@foreach (var item in ViewBag.MyList) { ... }
于 2012-06-12T10:30:48.570 回答
4
  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>
    }
    

我认为这将有助于开始。

于 2012-06-12T14:27:35.887 回答