C# 有没有办法在html标记中执行blazor组件中的代码?

C# 有没有办法在html标记中执行blazor组件中的代码?,c#,razor,blazor,C#,Razor,Blazor,我想做的是这样的事情: <input type="text" @if(!String.IsNullOrEmpty(Element.Placeholder)) { placeholder="@Element.Placeholder" } /> 我想用很多属性,比如maxlength,value,等等来做这个。 我提出的最佳解决方案是使用MarkUpString执行上述操作,然后进行渲染。我想知道是否有一种方法可以在html标记中使用i

我想做的是这样的事情:

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

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


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

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

<button @attributes="this.ButtonAttributes">Red Button</button>
红色按钮
@code{
私有字典按钮属性=新字典();
受保护的覆盖任务OnInitializedAsync()
{
按钮属性。添加(“类别”、“btn btn危险”);
返回Task.CompletedTask;
}
}

我将此作为一个评论,因为我相信Shaun的答案是好的,但还有一点需要注意:在您在问题中给出的示例中,您根本不需要考虑条件-并分配
占位符=“@Element.placeholder”
-如果占位符为空,Blazor将删除该属性。然而,不可为null的情况并非如此,所以请坚持肖恩的回答:)这就是我最后所做的。我希望这个输入可以从另一个组件编辑,我得到一个@attributes错误。我把int值改为int?因此,它们是可空的,目前似乎运行良好。@DimitriosTsimaras。您好,如果您对答案满意,请勾选答案。我一点也不在乎这些问题,但这表明问题已经得到了回答。
@code{

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

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

}