【问题标题】:Is there a way to execute code in blazor component inside html tags?有没有办法在 html 标签内的 blazor 组件中执行代码?
【发布时间】:2021-05-30 23:10:30
【问题描述】:

我想做的是这样的:

<input type="text"
@if(!String.IsNullOrEmpty(Element.Placeholder))
{
   placeholder="@Element.Placeholder"
}
/>

我想用 maxlength、value 等许多属性来做到这一点。 我想出的最佳解决方案是使用 MarkUpString 执行上述操作,然后进行渲染。我想知道是否有一种方法可以在 html 标记内使用 if's,这样我的代码会更干净,更容易修改。请宽容,我是编程新手,尤其是 Blazor。谢谢

*编辑:我希望这个组件也可以从另一个组件编辑。

【问题讨论】:

  • 我将此作为评论提供,因为我相信肖恩的回答很好,但还有一点需要注意:在您在问题中给出的示例中,您根本不会打扰有条件的 - 并分配 placeholder="@Element.Placeholder" - 如果 Placeholder 为空,Blazor 将删除该属性。但是,不可为空的情况并非如此,所以坚持肖恩的回答:)
  • 这就是我最终做的。我希望这个输入可以从另一个组件编辑,我得到了@attributes 的错误。我将 int 值更改为 int?所以它们是可以为空的,并且现在似乎工作正常。
  • @DimitriosTsimaras。嗨,如果您对答案感到满意,请勾选答案。我不在乎这些要点,但它将问题标记为已回答。

标签: c# razor blazor


【解决方案1】:

您可以使用@attributes。我在下面展示了一个非常简单的代码示例来设置样式。

<button @attributes="this.ButtonAttributes">Red Button</button>
@code{

  private Dictionary<string, object> ButtonAttributes = new Dictionary<string, object>();

  protected override Task OnInitializedAsync()
  {
    ButtonAttributes.Add("class", "btn btn-danger");
    return Task.CompletedTask;
  }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-17
    • 2019-12-03
    • 1970-01-01
    • 2019-04-22
    • 2018-07-30
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多