繁体   English   中英

如何将数组从控制器传递到_layout.cshtml

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM