簡體   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