【发布时间】:2012-06-12 10:28:27
【问题描述】:
我有一个 List 与 Controller 操作中的一些数据绑定,我想将该 List 传递给 View 以与 Razor View 中的 DataGrid 绑定。
我是MVC的新手。谁能帮我如何通过以及如何在View中访问。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 razor
我有一个 List 与 Controller 操作中的一些数据绑定,我想将该 List 传递给 View 以与 Razor View 中的 DataGrid 绑定。
我是MVC的新手。谁能帮我如何通过以及如何在View中访问。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 razor
将数据传递给视图就像将对象传递给方法一样简单。看一眼 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>
}
【讨论】:
@Model 而不是 @model 时为我工作。
我这样做了;
在控制器中:
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>
希望对你有帮助
【讨论】:
您可以使用动态对象ViewBag 将数据从控制器传递到视图。
将以下内容添加到您的控制器:
ViewBag.MyList = myList;
然后你可以从你的视图中访问它:
@ViewBag.MyList
// e.g.
@foreach (var item in ViewBag.MyList) { ... }
【讨论】:
创建一个模型,其中包含您的列表和视图所需的其他内容。
例如:
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>
}
我认为这将有助于开始。
【讨论】: