我想将输入标记助手与剃刀代码组合起来设置属性,但我不能让这两种技术一起工作 . 我只是试图根据视图模型属性的值在输入字段上设置disabled属性 .
当我把剃刀代码放在 asp-for
标签后面时,无法识别剃刀智能感知并且字段未按预期禁用...
<input asp-for="OtherDrugs" @((Model.OtherDrugs == null) ? "disabled" : "") class="form-control" />
渲染输出......
<input type="text" id="OtherDrugs" name="OtherDrugs" value="" />
当我将razor代码放在 asp-for
标记之前时,标记帮助程序intellisense无法识别,并且该字段未按预期设置视图模型属性...
<input @((Model.OtherDrugs == null) ? "disabled" : "") asp-for="OtherDrug" class="form-control" />
渲染输出......
<input disabled asp-for="OtherDrugs" class="form-control" />
Note that combining tag helpers and razor does work if the razor code is inside a class attribute. Unfortunately input fields require the disabled attribute and not the disabled class for bootstrap 3.
有没有办法让这项工作?
3 回答
要呈现禁用的输入元素,只需添加禁用的属性即可 . 以下所有内容将呈现禁用的输入文本元素 .
在Asp.NET Core中,您可以扩展现有的输入标记帮助程序以创建只读输入标记帮助程序 .
扩展
InputTagHelper
类,添加新属性以标识是否应禁用输入,并根据此值将"disabled"属性添加到输入 .现在要使用这个自定义textarea助手,你需要在
_ViewImports.cshtml
中调用addTagHelper
方法 .现在在您的视图中,您可以指定
asp-is-disabled
属性值 .您可以像这样使用ASP Core标记助手:
然后为您的 property 添加[可编辑(虚假)],如下所示:
[Editable(false)] public string Name {set;get;}
那么你应该扩展InputTagHelper:
最后在_ViewImports.cshtml中导入TagHelper:
该解决方案的优点是将逻辑放在模型中并保留MVC原则 .
你最好做这样的事情:
然后