Asp.net mvc 如何在MVC3中将列表从控制器传递到视图
我在控制器操作中有一个与一些数据绑定的列表,我想将该列表传递给视图,以便在Razor视图中与DataGrid绑定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
我是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”]的问候。