ASP.NET Core Razor:无值的条件属性

时间:2019-04-24 19:39:12

标签: asp.net-core razor

我想有条件地在readonly中渲染<input>属性。在Razor的ASP.NET Core方言中,属性的解释与System.Web.Mvc稍有不同。

在System.Web.Mvc中,我曾经做过:

<input name="Name" class="form-control" @(Model.MyCondition ? "readonly" : "") />

在ASP.NET Core中,这是行不通的:没有错误,但是属性也未呈现。

<input asp-for="Name" class="form-control" @(Model.MyCondition ? "readonly" : "" ) />

该属性一旦在HTML中出现,便会强制执行,因此我无法对属性的 value 进行任何操作。此代码段将导致输入始终为只读:

<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : "" )" />

现在,我可以通过创建一个标签助手来解决is-readonly标签,但是对于这么简单的事情,它似乎很费解。

如何在不借助自定义标记帮助程序的情况下有条件地呈现无值属性?

1 个答案:

答案 0 :(得分:0)

如果您的条件不匹配(而不是空字符串)时将值设置为null,则该属性将不呈现,如下所示:

<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : null )" />