我有一个List<>与Controller动作中的一些数据绑定,我想传递该列表<>在Razor View中查看与DataGrid绑定。
我是MVC的新手。任何人都可以帮助我在View中传递和如何访问。
答案 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)
创建一个模型,其中包含您的列表以及视图所需的其他内容。
例如:
public class MyModel
{
public List<string> _MyList { get; set; }
}
从action方法中将您想要的列表放到Model _MyList
属性中,如:
public ActionResult ArticleList(MyModel model)
{
model._MyList = new List<string>{"item1","item2","item3"};
return PartialView(@"~/Views/Home/MyView.cshtml", model);
}
在您的视图中访问模型如下
@model MyModel
foreach (var item in Model)
{
<div>@item</div>
}
我认为这将有助于开始。