asp.net TagHelper根据条件向元素添加class


在 Asp.Net MVC中,我们可以有条件地添加类,如下所示:

HTML 全选
<div class="choice @(Model.Active?"active":"")">
</div>

如何通过使用标签助手和删除其他部分来做到这一点。

解决方案

能够通过以下标签添加条件 css 类Helper 提供。这个代码像AnchorTagHelper asp-route-*一样,用于添加路由值的行为。

C# 全选
[HtmlTargetElement("div", Attributes = ClassPrefix + "*")]
public class ConditionClassTagHelper : TagHelper
{
    private const string ClassPrefix = "condition-class-";

    [HtmlAttributeName("class")]
    public string CssClass { get; set; }

    private IDictionary<string, bool> _classValues;

    [HtmlAttributeName("", DictionaryAttributePrefix = ClassPrefix)]
    public IDictionary<string, bool> ClassValues
    {
        get {
            return _classValues ?? (_classValues = 
                new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase));
        }
        set{ _classValues = value; }
    }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        var items = _classValues.Where(e => e.Value).Select(e=>e.Key).ToList();

        if (!string.IsNullOrEmpty(CssClass))
        {
            items.Insert(0, CssClass);
        }

        if (items.Any())
        {
            var classes = string.Join(" ", items.ToArray());
            output.Attributes.Add("class", classes);
        }
    }
}

在 _ViewImports.cshtml 添加对 taghelper 的引用,如下所示

C# 全选
@addTagHelper "*, WebApplication3"

在.cshtml中使用taghelper:

HTML 全选
<div condition-class-active="Model.Active" condition-class-show="Model.Display">
</div>

Active = true 和 Display = true 的结果:

HTML 全选
<div class="active show">
</div>

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:win11删除快捷方式的箭头
下一篇:winform使用webBrowser,C#直接调用js函数,并且支持array数组
评论列表

发表评论

评论内容
昵称:
关联文章

asp.net TagHelper根据条件元素添加class
asp.net - 在 ASP.NET Core MVC 中嵌套 TagHelper
ASP.NET Core 标记帮助程序(TagHelper)数据列表支持,循环数据
.NET5 ASP.NET Core 添加API限流
asp.net core MVC路由添加.html伪静态url时报错
ASP.NET MVC 后台控制器View前台传递数据的几种方式
.Net 6 添加NLog
ASP.NET MVC快速入门(一)
ASP.NET Core web API中使用Swagger/OpenAPI(Swashbuckle)
C# ASP.NET Core开发学生信息管理系统(一)
【推荐】Razor文件编译 ASP.NET Core
asp.net core 支持多种身份认证方式
ASP.NET Core MVC中的路由约束
C# ASP.NET Core开发学生信息管理系统(二)
ASP.NET Core 使用 LESS
ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action
.NET 通用多条件动态参数查询方法 - SqlSugar ORM
AgGrid显示垂直竖列线条
ASP.NET Core官网教程,资料查找
C# ASP.NET Core开发学生信息管理系统(三)

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码