Controllerアクションの一部のデータにバインドされたList <>があり、そのList <>をViewに渡して、Razor ViewのDataGridにバインドします。
私はMVCを初めて使用していますが、Viewでの受け渡し方法やアクセス方法を教えてください。
データをビューに渡すのは、オブジェクトをメソッドに渡すのと同じくらい簡単です。 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>
}
これは私がしました;
コントローラー内:
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; }
}
アクションメソッドから目的のリストをモデルに配置し、_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>
}
開始に役立つと思います。