【问题标题】:Blazor: have a child component update properties of a model in its parentBlazor:有一个子组件更新其父模型的属性
【发布时间】:2021-12-07 06:14:16
【问题描述】:

我正在寻找一种方法来编辑类/模型实例的参数,该参数从父级的子级持续存在于父级中。

我有一个组件可以处理字符串的编辑,这些字符串通常是较大模型的一部分。

假设我有这些模型:

 public class Customer
{
    public string FirstName;
    public string LastName;
}
public class Arena
{
    public string Name;
    public string Location;
}

我的父组件看起来像这样: .cs 部分(命名为:Parent.razor.cs):

public partial class Paren : ComponentBase
{
    public Arena myArena;
    public Customer myCustomer;
    protected override async Task OnInitializedAsync()
    {
        myArena = new Arena() { Location = "Centrum", Name = "TheBigGlobe" };
        myCustomer = new Customer() { FirstName = "kalle", LastName = "anka" };
    }
}

及其 .razor 部分(命名为:Parent.razor)

<h1>component test</h1>
@if(myArena != null)
{
    //pass paramenter by ref to child
}

如何创建一个子组件,将其更改绑定到父级中未知模型的实例和属性?

例如,如何使我的子组件能够将 myArena.Name 的引用作为参数,然后在父组件中更新它?请注意,传递给子项的引用可以是来自任何其他类实例的任何其他参数,这一点很重要。

我正在寻找的是一种编辑类/模型实例的参数的方法,该参数从父级的子级持续存在于父级中。

【问题讨论】:

  • 为什么不用ViewBag
  • @MohammadFarahi 我不认为 ViewBag 在 Blazor 中可用,不是吗?
  • 你能展示一下子组件里面有什么吗?

标签: c# razor blazor


【解决方案1】:

您可以轻松地创建一个子组件并传递一个 arena 参数。

 <childComponent arena={myArena}> </childComponent> 

@code { 

   [parameter] public Arena arena {get; set;}
}

如果你想从子组件中获取修改后的数据竞技场,你可以使用 EventCallBack。

这里有一篇文章描述了communicates between two components.的几种方法

【讨论】:

  • 希望有一种方法可以只将 arena 中的属性的引用传递给子级,以便对子级所做的任何更改也会更改父级,但我想这对问 atm :) thx 4 你的答案!
猜你喜欢
  • 1970-01-01
  • 2022-01-13
  • 2021-07-04
  • 2017-05-30
  • 2017-05-18
  • 2016-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多