asp.net-core - 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 中,它就会被强制执行,所以我不能对属性的值做任何事情。此代码段将导致输入始终为只读:
<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 )" />
推荐阅读
- bash - 如何通过脚本设置密码变量以安装 cifs 共享
- python - 将地理坐标从 GEOSTAT 转换为 lat 和 lng
- node.js - Alexa HTTPS 端点 - 没有收到任何请求
- javascript - (()=>true)() 前的分号
- python - 如何在python中将包含十六进制数字的字符串转换为ascii文本
- python - 如何使用字符串引用 Django 中的模型字段?
- java - Javafx:一次多个keylisteners
- java - Java volatile 和构造对象
- python - 我应该如何使用 BeautifulSoup 在页面上的特定 dt 标签之间抓取 dd 标签中的文本?
- python - 调试命令显示变量的名称和值?