Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在MVC3中将列表从控制器传递到视图_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 如何在MVC3中将列表从控制器传递到视图

Asp.net mvc 如何在MVC3中将列表从控制器传递到视图,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我在控制器操作中有一个与一些数据绑定的列表,我想将该列表传递给视图,以便在Razor视图中与DataGrid绑定 我是MVC新手。谁能帮我在视图中传递和访问数据吗。您可以使用动态对象ViewBag将数据从控制器传递到视图 将以下内容添加到控制器: ViewBag.MyList = myList; public ActionResult Index() { var invoices = db.Invoices; var categories = db.Categories.ToList

我在控制器操作中有一个与一些数据绑定的列表,我想将该列表传递给视图,以便在Razor视图中与DataGrid绑定


我是MVC新手。谁能帮我在视图中传递和访问数据吗。

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

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

ViewBag.MyList = myList;
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());
}
然后,您可以从视图中访问它:

@ViewBag.MyList

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

将数据传递给视图和将对象传递给方法一样简单。看看

像这样的

//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>
}
//控制器
列表=新列表();
返回视图(列表);
//看法
@模型列表
//属性模型是列表的类型
@foreach(模型中的var项目)
{
@项目名称
}
  • 创建一个模型,其中包含视图所需的列表和其他内容

    例如:

    public class MyModel
    {
        public List<string> _MyList { get; set; }
    }
    
  • 在视图中,按如下方式访问模型

    @model MyModel
    foreach (var item in Model)
    {
       <div>@item</div>
    }
    
    @model-MyModel
    foreach(模型中的var项目)
    {
    @项目
    }
    
  • 我想这将有助于开始。

    我这样做了

    在控制器中:

    ViewBag.MyList = myList;
    
    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>
    
    @model IEnumerable
    @{
    ViewBag.Title=“发票”;
    }
    @{
    var categories=(List)ViewData[“MyData”];//转换列表
    }
    @foreach(var c in@categories)//打印列表
    {
    @Html.Label(c.Name);
    }
    ...
    @foreach(模型中的var项目)
    {
    ...
    }
    

    希望能有所帮助

    这是最糟糕的数据从控制器传递到视图的方式是的,但也是最简单的。我不同意。带有viewbag的魔术字符串比返回视图(模型)更容易?它在背景中具有复杂的魔力,当然不是万无一失的。但从初学者的角度来看,这是最简单的解决方案之一。我更喜欢你的答案,很乐意给它一个+1,但我会留下我的作为参考。我只是强烈反对使用viewbag/viewdata,并且更喜欢使用viewmodels:)在我使用
    @Model
    而不是
    @Model
    时对我有效。如果您想将两个单独的列表从控制器发送到视图,该怎么办?您应该创建具有两个列表属性的ViewModel类,并将该类的实例传递给ViewModel。是否有任何方法可以在不使用foreach循环的情况下获取数据我们写model=>model.Data@archilwhat如果你想从Controller发送两个单独的列表来查看呢?嗨@RehanKhan,我想你应该用两个不同的名称创建两个viewdata。致以ViewData[“MyList1”]和ViewData[“MyList2”]的问候。