C# .NET/CSS Foreach复选框个人样式

C# .NET/CSS Foreach复选框个人样式,c#,css,razor,C#,Css,Razor,我有一个foreach循环创建复选框es,使它们都具有相同的ID。我有一些CSS,但当你选中任何一个框时,它会将CSS放到第一次迭代中,我如何添加一些动态ID之类的东西,只将CSS添加到所选框中 循环: 为什么不给每个元素分配它们的项目ID呢 <div class="select"> <input type="checkbox" id="select_@item.ID" /> <label for="select"></label>

我有一个
foreach
循环创建
复选框
es,使它们都具有相同的ID。我有一些CSS,但当你选中任何一个框时,它会将CSS放到第一次迭代中,我如何添加一些动态ID之类的东西,只将CSS添加到所选框中

循环:


为什么不给每个元素分配它们的项目ID呢

<div class="select">
    <input type="checkbox" id="select_@item.ID" />
    <label for="select"></label>
</div>

除非列表中有重复项,否则它们总是唯一的


顺便说一句:您的视图不应该过滤掉项目,它应该只提供它需要的项目(即
其中
应该在数据库级别完成)

您可以简单地使用
项.UserTable.ID
,如果它有多个ID来创建动态ID,并且输入类可以是
class=“select”
,通过这种方式,您可以对每个复选框应用相同的CSS,并具有不同的ID。另一种方法是在数组中使用元素索引,或者在对象中使用使其唯一的东西。ID应该是唯一的,所以无论如何都要解决这个问题(可以使用递增计数器)。但是对于css,您可以使用类似于nth的东西-child@ThadeuFernandes从linq查询的外观来看,每个查询的id都是相同的item@Pete是的,我在评论后注意到了。刚刚添加了另一种方法。它可能有重复项,我相信
ViewBag.UserTableID
不是数组,它只使用一个ID创建多个复选框。@thadeurnandes,用于
item.UserTable.ID
,我建议
item.ID
,它不应该与
UserTable
关系有任何关系。是的,我假设我可以这样做,但是CSS如何知道选择哪个样式?这会使用JS吗?对不起,如果我听起来像个白痴!啊,是的,注意到,已经从视图中删除了任何linq表达式,只是一个旧的表达式。@liamcook,这将取决于每个项目的样式。您可以使用
@if
指定服务器上的类,在CSS中使用CSS选择器(如
2n-1
),或者在document ready事件中使用JavaScript。请注意,在您发布的CSS中,您从不使用ID
.select {
width: 20px;
position: relative;
}

.select label {
    cursor: pointer;
    position: absolute;
    width: 20px;
    height: 20px;
    top: 0;
    left: 0;
    background: #eee;
    border: 1px solid #ddd;
}

    .select label:after {
        opacity: 0.2;
        content: '';
        position: absolute;
        width: 9px;
        height: 5.5px;
        background: transparent;
        top: 4.8px;
        left: 5.4px;
        border: 3px solid #333;
        border-top: none;
        border-right: none;
        transform: rotate(-45deg);
    }

.select label:hover::after {
opacity: 0.5;
}

.select input[type=checkbox]:checked + label:after {
opacity: 1;
}
<div class="select">
    <input type="checkbox" id="select_@item.ID" />
    <label for="select"></label>
</div>