Asp.net core ASP.NET核心剃须刀:无值的条件属性
我想在Asp.net core ASP.NET核心剃须刀:无值的条件属性,asp.net-core,razor,Asp.net Core,Razor,我想在中有条件地呈现只读属性。在Razor的ASP.NET核心方言中,属性的解释与System.Web.Mvc略有不同 在System.Web.Mvc中,我曾经做过: <input name="Name" class="form-control" @(Model.MyCondition ? "readonly" : "") /> 在ASP.NET Core中,同样的方法不起作用:没有错误,但属性也不会呈现 <input asp-for="Name" class="form
中有条件地呈现只读属性。在Razor的ASP.NET核心方言中,属性的解释与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中,它就会被强制执行,因此我无法对属性的值进行处理。此代码段将导致输入始终为只读:
<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : "" )" />
现在,我可以通过创建一个标记帮助器来解决这个问题,它将响应is readonly
标记,但对于如此简单的事情来说,这似乎非常复杂
如何有条件地呈现无值属性而不求助于自定义标记帮助程序?如果在条件不匹配(而不是空字符串)时将值设置为null
,则不会呈现属性,如下所示:
<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : null )" />
I在razor页面中测试它在我这边起作用,当MyCondition为true时,它会显示readonly
属性,您能分享复制的步骤吗?这似乎对我不起作用。它仍然呈现“readonly”属性,而不显示值。请看: