【问题标题】:How to target specific div with Blazor components?如何使用 Blazor 组件定位特定的 div?
【发布时间】:2020-12-17 01:58:59
【问题描述】:

我有一个top-row div 如下:

   <div class="top-row px-3">
      <b>App:<i>Title</i></b>

      <!-- wait for it ... -->
      <div class="menu">
         Menu Bar Here
      </div>

   </div>

我将拥有几个 MenuBar 组件,它们将在 div 类 menu 中交换出来单击按钮。如何使用 Blazor 组件定位该 div?

更新
我想我找到了Chris Sainty 的解决方案。

编辑
澄清我打算完成的工作:

我有 2 个组件:

  • &lt;MenuBar1 /&gt;
  • &lt;MenuBar2 /&gt;

两者都包含不同的 html 来构造一个简单的菜单栏。我有导航链接,点击后会引发onClick 事件。

当链接被点击时,如何换掉 MenuBar 组件?

【问题讨论】:

    标签: html asp.net-core blazor blazor-client-side blazor-component


    【解决方案1】:

    Blazor 不使用 Javascript 策略。 为此,您必须将 HTML 与代码混合。

    <div class="top-row px-3">
        <b>App:<i>Title</i></b>
        <!-- wait for it ... -->
        <div class="menu">
            @if (Version == "v1")
            {
                <p>version 1</p>
            }
            else if (Version == "v2")
            {
                <p>version 2</p>
            }
        </div>
    </div>
    

    对于动态菜单,在共享文件夹中添加一个文件。 文件名=类名 例如 MenuButton.razor

    @inject NavigationManager navManager
    <button @onclick="(e)=>navManager.NavigateTo(route)">@(label)</button>
    
    @code {
        [Parameter]
        public string label { get; set; }
        [Parameter]
        public string route { get; set; }
    }
    

    使用这个组件

    <div class="top-row px-3">
        <b>App:<i>Title</i></b>
        <!-- wait for it ... -->
        <div class="menu">
            <MenuButton label="Choice 1" route="/route1" />
            <MenuButton label="Choice 2" route="/route2" />
        </div>
    </div>
    

    【讨论】:

    • 我编辑了更改的原因。这是静态解决方案的有用答案......不要删除它。您可以通过单击按钮添加如何执行此操作吗?
    • 我很想看看您提出的解决方案可能是我在问题中引用的链接。
    • 我结合了你的答案和 Chris Sainty 对他的所作所为。我很快就会展示我的作品。平心而论,我仍然不清楚我的意图是什么。我将再次编辑问题以充分阐明我打算完成的工作。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2016-07-29
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2018-03-04
    相关资源
    最近更新 更多