【问题标题】:Initializing array of typed arrays in razor page在剃须刀页面中初始化类型化数组的数组
【发布时间】:2020-02-07 08:49:30
【问题描述】:

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

第一级类型化集合类(LinkArray):

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; } 

}

链接类:

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?

【问题讨论】:

  • 我认为您需要编辑问题以更清楚地说明您要做什么,遇到什么问题。目前只是有点太模糊了
  • @Quango 啊好吧,我头疼得睡不着觉,将缩小问题范围或重新创建主题。
  • @Quango 完成,现在简化了。唯一的问题在最后一行。
  • @Kasrak 我不完全确定 LinkArray 是什么。这是来自 razor 库还是 blazor 库?我似乎找不到任何东西。但是,如果这是您创建的类型之一,您也可以分享一下吗?
  • @Urasquirrel LInkArray 是此处提取的第一个代码,我在该代码块的上一行提到了它的名称,现在将编辑代码块,所以猜你会发现它更容易。

标签: c# arrays razor blazor jagged-arrays


【解决方案1】:

用法很简单:

<CustomComp AllColz="@allColz" />

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

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

parameter reference

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

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

【讨论】:

  • 我的问题正是你省略的部分。 @allColz 不能通过 GetAllColz() 填充,对吗?我们怎么能这样做?另一方面,我希望您用真实数据填充 allColz,因为这是我的问题的一部分。谢谢
  • 我的问题是关于数据的“数组初始化”,您可以在“组件代码”中提供示例代码或展示如何绑定到您的 GetAllColz。但我需要使用数据进行完整的数组初始化。
  • 好的,您正在填充和初始化“GetAllColz()”中的数据,对吧?没问题。现在 AllColz="@allColz" 将如何触发 "GetAllColz()" ?
【解决方案2】:

将第一级数据数组改为static

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

然后通过以下行添加:

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

【讨论】:

    猜你喜欢
    • 2018-12-03
    • 2013-05-04
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多