0

我正在尝试CSS<fieldset>. 通常一个@helper函数可以正常工作(见@helper下文),但是我有两 (2) 种情况不允许它正常工作。

首先,我Input.Edit.cshtml~/Views/EditorTemplates/Fields.

这基本上意味着,当我建立一个表单时,Input.Edit.cshtml每次都会调用该文件,<input>因为我在表单中拥有的 's 数量一样多。

其次,我使用条件来检查 URL 的路径,以便仅CSS在特定路径以下的页面上应用此交替类。具体来说,我想将此更改应用于我的~/Services路径下的页面。在所有其他页面上,我不希望应用更改。Request.Url.AbsoluteUri我使用如下所示检查此条件。

这就是我认为我的问题所在,因为应用了交替代码,但是因为在同一页面上针对相同条件再次调用它,所以由于我的逻辑而应用不正确。

现在可能是我被这个问题困住了。

这是代码:

@{
    string CurrentUrl = Request.Url.AbsoluteUri;
}

@helper ResponsiveCss(string cssClass)
{
    if (ViewBag.count == null) { ViewBag.count = 0; }
    <text>class="@(ViewBag.count % 2 == 1 ? cssClass : "one-half last")"</text>
    ViewBag.count++;
}

@if (CurrentUrl.Contains("Services"))
{ 
    <fieldset @ResponsiveCss("one-half")>

        //Label and Input code

    </fieldset>
}

应该发生的是,class="one-half"应用在<fieldset>表单中创建的第一个上,然后class="one-half last"应用到第二个创建的上。

相反,正在发生的事情是class="one-half"没有应用于第一个<fieldset>创建的,而是所有 <fieldset>的都是用class="one-half last".

抱歉,如果不清楚。考虑到这种情况(以及如何),我是否可以完成这项工作?谢谢。

4

1 回答 1

0

希望这可以解决您的问题。

交替风格

您可以使用 nth-of-type 或 nth-child 伪类,而不是交替类名。

fieldset:nth-of-type(odd) {}
fieldset:nth-of-type(even) {}

见这个例子:http: //jsfiddle.net/cx9UG/

注意:这些伪类也可以用在 JQuery 选择器和文档选择器中(querySelector 和 querySelectorAll)

CSS 取决于 URL

这实际上是取决于视图的 CSS。只需创建两个 CSS 包,然后应用到适当的视图。

  • 以交替样式查看@Styles.Render("~/Content/alternating")
  • 没有交替样式的视图@Styles.Render("~/Content/mono")

EditorTemplate 不需要知道 URL。

于 2013-11-06T14:45:39.250 回答