[英]How to pass an array from controller to _layout.cshtml
我必須將一個數組傳遞到我的_layout頁面(該頁面沒有@model)。 該數組必須來自控制器方法,例如:
public IActionResult AssignLoan()
{
EntityDetails entity = new EntityDetails();
entity.Name = (from o in _context.EntityDetails
select o.Name).ToString();
entity.Name.ToArray();
ViewData["populatedropdown"] = entity;
return View();
}
並且必須將數組傳遞到_layout視圖的此部分,並且必須將其設置為等於var國家。
var countries = ["Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa"];
使用視圖組件。 在您的項目中添加一個名為ViewComponents
的文件夾,並添加以下類。 顯然,將Foo
更改為一個實際描述此功能的名稱。
public class FooViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
var list = // get your list
return View(list);
}
}
然后,在Views\\Shared\\Components\\Foo\\Default.cshtml
添加一個視圖。 在內部,放入呈現您的HTML下拉列表。
最后,在您的布局中:
@await Component.InvokeAsync("Foo")
其中"Foo"
是視圖組件的名稱減去ViewComponent
部分。 View組件是可注入的,因此,如果您需要訪問上下文或其他內容,則只需添加一個構造函數即可,將其作為參數接收,並將其分配給ivar,就像使用控制器一樣。 另外,如果需要,可以向InvokeAsync
傳遞參數。 例如:
public async Task<IViewComponentResult> InvokeAsync(string foo)
接着:
@await Component.InvokeAsync("Foo", new { foo = "bar" })
可以在文檔中找到更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.