【问题标题】:How to use Substring method in Blazor for Parent Child relation?如何在 Blazor 中使用 Substring 方法处理父子关系?
【发布时间】:2021-11-04 23:54:02
【问题描述】:

我是 Blazor 的初学者,并在 Blazor WASM 中创建了一个简单的应用程序。有亲子关系。我真正想要的是 Parent 应该传递已切片的 FirstName,而 Child Component 应该将切片的 FirstName 作为参数并显示在页面上。

我的父组件

@using BlSls.Client.Shared

        <Child FirstName="@FirstName" />

@code{

 
private string FirstName ="Royster" ;

protected override async Task OnInitializedAsync()
{
       FirstName=FirstName.SubString(0,FirstName.Length-4);
}

  

}

我的孩子组件

<span >Welcome,@FirstName</span>
@code {

     [Parameter] public string FirstName { get; set; }
}

我需要在页面上将名为“Royster”的名字显示为“Roy”。但我无法将切好的绳子送给孩子。取而代之的是,我得到了完整的字符串。我的错误点是什么?有人可以帮帮我吗?

【问题讨论】:

标签: blazor blazor-webassembly


【解决方案1】:

发生这种情况是因为您将子字符串代码放在 OnInitializedAsync() 中,保留在 OnInitialized()

另外,您的代码可以改进:

父组件:

@using BlSls.Client.Shared

<Child SlicedName="@SlicedName" />

@code{
private string FirstName ="Royster" ;
private string SlicedName;
protected override void OnInitialized()
{
       SlicedName=FirstName.SubString(0,FirstName.Length-3);
}
}

由于子字符串不是特别昂贵的操作,可以直接在参数赋值中使用:

@using BlSls.Client.Shared

<Child SlicedName="@FirstName.SubString(0,FirstName.Length-3)" />

@code{
private string FirstName ="Royster" ;
}

【讨论】:

  • [礼貌] 与 OnInitialized()/OnInitializedAsync() 无关。如图所示的代码没有运行!此外,在 Razor 代码中放置内联 C# 代码块可能在代码行中很有效,但它很快就会变得混乱且难以阅读!
  • 这是个人喜好。我个人更喜欢把所有东西都放在代码后面。但我猜想 OP 只是想尝试一些工作并在深潜之前获得 blazor 的“外观和感觉”。适用于“最佳实践”位之前的个人编码人员。
【解决方案2】:

这是您的代码的工作版本。

  1. 组件是一样的。
  2. 我已经拆分了名字。
  3. SubString 实际上是 Substring,而且你的编码方式不起作用。
  4. OnInitializedAsync 丢失了 async,因为没有异步行为。
  5. 我已将您的方法放在按钮单击上。
@page "/Hello"
<Child FirstName="@shortFirstName" />

<div class="m-3">
    <button class="btn btn-dark" @onclick="Calc">Your Calculation</button>
</div>
@code{

    private string FirstName = "Royster";
    private string shortFirstName = "Royster";

    protected override Task OnInitializedAsync()
    {
        shortFirstName = FirstName.Substring(0, 3);
        return Task.CompletedTask;
    }

    protected void Calc()
        => shortFirstName = FirstName.Substring(0, FirstName.Length - 3);

}

什么开发。你使用的环境?为什么没有出现编译错误?

【讨论】:

  • 当您修复 Substring() 时,原始代码在 Child 中显示“Roys”。目前尚不清楚需要解决什么问题。
  • 同意,我的回答只是更正所提供的可以工作和编译的代码!提问者确实想要“罗伊”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2020-03-03
  • 1970-01-01
  • 2014-10-30
相关资源
最近更新 更多