我必须将一个数组传递到我的_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"];
答案 0 :(得分:2)
使用视图组件。将一个名为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" })
更多信息可以在docs中找到。