c# – ASP .NET核心输入标记助手不使用Razor代码
发布时间:2020-12-15 06:35:02 所属栏目:百科 来源:网络整理
导读:我想将输入标记助手与剃刀代码组合起来设置属性,但我不能让这两种技术一起工作.我只是试图根据视图模型属性的值在输入字段上设置disabled属性. 当我把剃刀代码放在asp-for标签之后,剃刀智能感知器无法被识别,并且该字段未按预期禁用… input asp-for="OtherD
我想将输入标记助手与剃刀代码组合起来设置属性,但我不能让这两种技术一起工作.我只是试图根据视图模型属性的值在输入字段上设置disabled属性.
当我把剃刀代码放在asp-for标签之后,剃刀智能感知器无法被识别,并且该字段未按预期禁用… <input asp-for="OtherDrugs" @((Model.OtherDrugs == null) ? "disabled" : "") class="form-control" /> 渲染输出…… <input type="text" id="OtherDrugs" name="OtherDrugs" value="" /> 当我把剃刀代码放在asp-for标签之前时,标签helper intellisense无法识别,并且该字段未按预期设置视图模型属性… <input @((Model.OtherDrugs == null) ? "disabled" : "") asp-for="OtherDrug" class="form-control" /> 渲染输出…… <input disabled asp-for="OtherDrugs" class="form-control" /> 请注意,如果剃刀代码位于类属性中,则组合标记助手和剃刀会起作用.遗憾的是,输入字段需要disabled属性,而不是bootstrap 3的禁用类. 有没有办法让这项工作? 解决方法
要呈现禁用的输入元素,只需添加禁用的属性即可.以下所有内容将呈现禁用的输入文本元素.
<input type="checkbox" disabled /> <input type="checkbox" disabled="disabled" /> <input type="checkbox" disabled="false" /> <input type="checkbox" disabled="no" /> <input type="checkbox" disabled="enabled" /> <input type="checkbox" disabled="why is it still disabled" /> 在Asp.NET Core中,您可以扩展现有的输入标记帮助程序以创建只读输入标记帮助程序. 扩展InputTagHelper类,添加一个新属性以标识是否应禁用输入,并根据此值将“disabled”属性添加到输入. [HtmlTargetElement("input",Attributes = ForAttributeName)] public class MyCustomTextArea : InputTagHelper { private const string ForAttributeName = "asp-for"; [HtmlAttributeName("asp-is-disabled")] public bool IsDisabled { set; get; } public MyCustomTextArea(IHtmlGenerator generator) : base(generator) { } public override void Process(TagHelperContext context,TagHelperOutput output) { if (IsDisabled) { var d = new TagHelperAttribute("disabled","disabled"); output.Attributes.Add(d); } base.Process(context,output); } } 现在要使用这个自定义textarea助手,您需要在_ViewImports.cshtml中调用addTagHelper方法. @addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *,YourAssemblyNameHere 现在在您的视图中,您可以指定asp-is-disabled属性值. <input type="text" asp-for="OtherDrugs" asp-is-disabled="@Model.OtherDrugs==null"/> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |