【发布时间】:2019-04-24 19:39:12
【问题描述】:
我想有条件地在<input> 中呈现readonly 属性。在 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 做任何事情。这个 sn-p 会导致输入总是是只读的:
<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : "" )" />
现在,我可以通过创建一个响应is-readonly 标签的标签助手来解决问题,但对于这么简单的事情来说,这似乎非常复杂。
如何在不借助自定义标签助手的情况下有条件地呈现无值属性?
【问题讨论】:
-
我在 razor 页面测试它在我这边工作,当 MyCondition 为 true 时它显示
readonly属性,你能分享重现的步骤吗?
标签: asp.net-core razor