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

Bal*_*alu 29 asp.net-mvc razor asp.net-mvc-3

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

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

arc*_*hil 44

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

protected internal ViewResult View(
    Object model
)
Run Code Online (Sandbox Code Playgroud)

像这样的东西

//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>
}
Run Code Online (Sandbox Code Playgroud)

  • 当我使用`@ Model`而不是`@ model`时为我工作. (4认同)
  • 您应该创建具有两个 List 属性的 ViewModel 类并将该类的实例传递给视图 (3认同)

Nel*_*nda 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());
}
Run Code Online (Sandbox Code Playgroud)

在视图中:

@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>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

  • @RehanKhan,您好,我认为您应该使用 2 个不同的名称创建 2 个视图数据。ViewData["MyList1"] 和 ViewData["MyList2"] 致以诚挚的问候。 (2认同)

Den*_*aub 6

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

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

ViewBag.MyList = myList;
Run Code Online (Sandbox Code Playgroud)

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

@ViewBag.MyList

// e.g.
@foreach (var item in ViewBag.MyList) { ... }
Run Code Online (Sandbox Code Playgroud)

  • 这是数据从控制器传递到视图的最差方式 (6认同)

小智 6

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

    例如:

    public class MyModel
    {
        public List<string> _MyList { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从操作方法将您想要的列表放入模型_MyList属性中,例如:

    public ActionResult ArticleList(MyModel model)
    {
        model._MyList = new List<string>{"item1","item2","item3"};
        return PartialView(@"~/Views/Home/MyView.cshtml", model);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在您看来访问模型如下

    @model MyModel
    foreach (var item in Model)
    {
       <div>@item</div>
    }
    
    Run Code Online (Sandbox Code Playgroud)

我认为这对开始有所帮助。