如何有条件地添加div和属性?

时间:2015-12-11 22:47:18

标签: asp.net

以下是我的ASP.NET站点上的一些代码。我最初想写

if((n%4)==0) {
    <div>
}
//code
if((n%4)==0) {
    </div>
}

但ASP.NET不会拥有它。它有一个编译错误。在我关闭}之前,它似乎会忽略div。所以我最终得到了以下内容。 if语句给我带来了同样的问题。我知道我可以通过写class="@(cond?"val":"")"来有条件地拥有价值观,但这只适用于我不喜欢的价值观 知道如何在那里有条件地拥有checked。写了4次相同的行是非常荒谬的,我怎么写这个呢?

<div>
    @for (int i = 1, n = 0; i < 32; i <<= 1, ++n)
    {
        if ((looking & i) != 0)
        {
            <input type="checkbox" name="SomeName" value="@i" id="SomeName_@i" checked>
        }
        else
        {
            <input type="checkbox" name="SomeName" value="@i" id="SomeName_@i">
        }
        <label for="SomeName_@i">@TestApp.Controllers.HomeController.enumFriendlyName[n]</label><br />
    }
</div>
<div>
    @for (int i = 32, n = 4; i < 256; i <<= 1, ++n)
    {
        if ((looking & i) != 0)
        {
            <input type="checkbox" name="SomeName" value="@i" id="SomeName_@i" checked>
        }
        else
        {
            <input type="checkbox" name="SomeName" value="@i" id="SomeName_@i">
        }
        <label for="SomeName_@i">@TestApp.Controllers.HomeController.enumFriendlyName[n]</label><br />
    }
</div>

1 个答案:

答案 0 :(得分:1)

我假设你在这里谈论剃刀。我将从属性开始..诀窍是使用html助手而不是手工编写html。

@Html.Label("Name", "LabelText")
@Html.CheckBox("Name", isChecked)

此外,对于CheckBox和其他助手,您可以传递和htmlAttributes anon函数,如果您为该属性指定的值evals为null,则该属性将不会包含在呈现的html中。

你在做什么?也许如果你告诉我们你想做什么,我们可以提出一些建议。您是否尝试使用条纹,因为您可以使用CSS。

因此,您可以使用partial作为每个div的内容而不是代码重复:

<div class="left">
   @Html.Partial(_controls, model)
</div>
<div class="right">
   @Html.Partial(_controls, model)
</div>

或者其他什么。我可能有错误的语法,但基本上你可以将模型传递给你可以包含你想要的项目范围的部分。

模型可以像new { start = 1, finish = 32 }