【问题标题】:Pass Value in Nested Parameter in Blazor Component在 Blazor 组件的嵌套参数中传递值
【发布时间】:2021-07-07 13:00:24
【问题描述】:

如何在嵌套参数中传递值。假设我有一个名为 mycomponent 的自定义控件

mycomponent.Razor

<label>
    
</label>
@code
{
   [Parameter]
    public TestBase Test { get; set; } = new TestBase();
}

TestBase

public class TestBase
{
    [Parameter]
    public string Cap { get; set; }
    [Parameter]
    public string Cap5 { get; set; }="hai"


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


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

}

我的页面

<mycomponent Test.Cap="my value">

</mycomponent>

Test.Cap="my value" 不起作用

在嵌套参数中传递值的正确方法是什么

【问题讨论】:

    标签: razor parameters nested blazor


    【解决方案1】:

    您应该将TestBase 传递给MyComponent,而不是尝试在MyComponent 中设置TestBase 的值。在MyComponent 中为Test 设置一个默认值只是涵盖了没有提供参数的情况。

    <mycomponent Test="MyTest">
    
    </mycomponent>
    
    @code {
    
      private TestBase MyTest = new TestBase() {Cap = "Test Value"};
    
      SomeButtonClick Event() 
      {
        MyTest.Value = "Another Value";
      }
    }
    

    我建议您阅读有关组件的信息 - This is a good startMS Docs

    更新

    对你的问题的直接回答是:不,你不能做你想做的事。

    【讨论】:

    • 您好 MrC 感谢您的回复。在我的情况下,我无法设置 Testbase 类的新实例,因为 Test 的其他嵌套属性中有重要值。假设 Testbase 类中有多个参数,例如 MenuId、sources、cap 等等
    • 您的代码没有显示 - 我看到 public TestBase Test { get; set; } = new TestBase();。这些新属性从何而来?也许只是传递一个包含 Cap 作为参数的字符串,并将其设置在组件中的 TestBase 实例中。或移动到数据服务以保存共享​​>数据。
    • 我在 Testbase 类中有单个参数仅用于测试目的。现在我已经更新了我原来的问题。请看
    • 看来您需要将TestBase 放入数据服务中。
    • 感谢您的回复。我接到你了。我只想知道,有没有办法从剃刀类的嵌套参数中传递值?
    猜你喜欢
    • 2021-01-18
    • 1970-01-01
    • 2020-02-28
    • 2021-12-21
    • 2014-02-27
    • 2017-11-17
    • 1970-01-01
    • 2019-01-07
    • 2021-06-08
    相关资源
    最近更新 更多