我有一种情况,我希望根据在视图模型上设置的属性显示启用或禁用按钮。
@if (Model.CanBeDeleted)
{
<button type="button" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash"> </span>
Delete
</button>
}
@if (!Model.CanBeDeleted)
{
<button disabled="disabled" type="button" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash"> </span>
Delete
</button>
}
我可以在上面看到的代码中的代码可以正常工作。
但是,我正在寻找一种方法,我只能在if语句中包含disabled
属性,而不是为每种情况都有一个单独的按钮元素。
关于我如何做到这一点的任何建议?
答案 0 :(得分:12)
您可以使用@Html.Raw
将标记直接注入元素
<button @Html.Raw(Model.CanBeDeleted?"":"disabled='disabled'")
type="button" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash"> </span> Delete
</button>
答案 1 :(得分:5)
试试这个:
<button type="button" class="btn btn-danger btn-sm" disabled="@Model.CanBeDeleted">
<span class="glyphicon glyphicon-trash"> </span>
Delete
</button>
来吧。试试吧。您会注意到@Model.CanBeDeleted
为false时,元素中缺少disable
属性。相反,当@Model.CanBeDeleted
为真时,disable
元素存在,并设置为disable
它是如何工作的?
这要归功于Razor的“条件属性”功能。如果您将剃刀变量分配给cshtml
(或vbhtml
)中的属性,则其行为将如下所示:
disabled=disabled
,checked=checked
...你明白了)class="@myvar"
=&gt; class="the_value_of_myvar
“)我对这个sintax的喜爱之处在于它极大地帮助您保持剃刀视图的可读性。
您可以在此article
中详细了解相关信息答案 2 :(得分:1)
<!button @(Model.CanBeDeleted?"":"disabled='disabled'")
type="button" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash"> </span> Delete
</!button>
您可以选择使用!(感叹号)评估单个元素作为TagHelper
在目前的形式中,Razor TagHelpers不允许您通过包含要插入的属性的字符串文字来插入属性。
答案 3 :(得分:0)
执行一次检查,并通过名为enabled的临时变量确定disabled属性。
@code
var enabled = "disabled='disabled'";
if(Model.CanBeDeleted)
enabled = "";
end code
<button Html.Raw(enabled) type="button" class="btn btn-danger btn-sm">
<span class="glyphicon glyphicon-trash"> </span>
Delete
</button>