0

CSSでクラスを代替しようとしてい<fieldset>ます。通常、@helper関数は正常に動作しますが (以下を@helper参照)、正常に動作しない状況が 2 つあります。

まず、 でInput.Edit.cshtmlフィールド テンプレートを使用しています~/Views/EditorTemplates/Fields

これは基本的に、フォームを作成するときに、フォームにあるのInput.Edit.cshtmlと同じ数のファイルが毎回呼び出されることを意味します<input>

次に、条件を使用して 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"はなく、ALLで作成されています。<fieldset> <fieldset>class="one-half last"

それが明確でない場合は申し訳ありません。状況(およびその方法)を考慮して、これを機能させることができるかどうかについての考えはありますか? ありがとう。

4

1 に答える 1