在剃刀页面中初始化类型化数组的数组

Initializing array of typed arrays in razor page

在这里,我尝试实例化并初始化一个自定义类型的数组,以将其绑定到 Blazor 的组件 中。 它是一种数组数组。但是是打字的,第一个封装在class.

一级类型集合class(Link数组):

public class LinkArray
{
        // constructor will automatically generate the addresses if not given
        public LinkArray(string[] params links)
        { ... }

        public Link[] Links { get; set; }

        public Link Header { get; set; } 

}

Link class:

public class Link
{
    public string Title { get; set; }
    public string Address { get; set; }
}

.razor 文件代码段中的初始化:

    @code{
    //LinkArray[] allColz;

    // Method 1 : creating LinkArrays individually, and then trying to add each 
    // It has a constructor that can handle it via just passing the first parameter
    LinkArray firstCol = new LinkArray("asd","asdasd","asdasd");
    LinkArray secondCol = new LinkArray("asd","asdasd","asdasda","asdasd");

    //LinkArray[] allColz = new LinkArray[] { 'firstCol', 'secondCol' };
    List<LinkArray> allColz = new List<LinkArray>() { 'How to add firstCol & secondCol here');
}

用法:

<CustomComp AllColz="@allColz" />

如何用上面显示的 firstCol 和 secondCol 初始化和填充 allColz?

用法非常简单:

<CustomComp AllColz="@allColz" />

所以在你的组件代码中应该是

[Parameter] List<LinkArray> AllColz {get;set;}

parameter reference

我不清楚您为什么要在组件代码中设置此 属性。如果你想在组件中创建值然后从外部访问它(例如从父组件)那么你可能想要使用 returns 值的方法,而不是使用 Parameter,例如

@code 
{
   public List<LinkArray> GetAllColz() 
   {
     return allColz;
   }
}

将第一层数据数组改为static

static LinkArray firstCol = new LinkArray("asd","asdasd","asdasd");
static LinkArray secondCol = new LinkArray("asd","asdasd","asdasda","asdasd");

然后通过以下行添加:

LinkArray[] allColz = new LinkArray[] {firstCol, secondCol };