我想有条件地在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
标签,但是对于这么简单的事情,它似乎很费解。
如何在不借助自定义标记帮助程序的情况下有条件地呈现无值属性?
答案 0 :(得分:0)
如果您的条件不匹配(而不是空字符串)时将值设置为null
,则该属性将不呈现,如下所示:
<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : null )" />