0

マスターページに、いくつかの要因(深さ、URLパスなど)に応じて本体クラスを設定するマクロ呼び出しがありますが、マクロが最終的なhtmlに余分なスペースを追加している理由を調べるために、それを取り除いています。 。

マスターページマクロ行:

    <body class="<umbraco:Macro Alias="Bodyclass" runat="server"></umbraco:Macro>">

簡略化されたマクロ:

@{
  var bodyClass = "";
  if ((Model.NodeTypeAlias == "WLHomePage" ) ||
     (Model.NodeTypeAlias == "WLHomeSubPage" ))
  { bodyClass = "front"; } else {
     bodyClass = "not-front";  }
    @bodyClass;
}

戻り値:

    <body class="
front">

class="の最初の二重引用符と実際のクラス文字列の間の余分なスペースに注意してください。

4

4 に答える 4

1
@{
    if (Model.NodeTypeAlias == "WLHomePage" || Model.NodeTypeAlias == "WLHomeSubPage")
    { 
        return "front";
    }
    else 
    {
        return "not-front";
    }
}

代わりに値を返すだけの場所で試してください。

于 2012-08-06T11:30:37.117 に答える
0

Html.Rawを使用してhtmlを出力してみてください。だから次のようなもの:

@{
  var bodyClass = "";
  if(...)
  { 
    bodyClass = "front"; 
  } 
  else 
  {
    bodyClass = "not-front";  
  }

  @(Html.Raw(@bodyClass));

}
于 2012-08-05T15:23:00.573 に答える
0

余分な改行を削除する

マクロコードの前後に余分な改行がないことを確認してください。これを確認するには、テキストエディタでcshtmlファイルを開くことをお勧めします。私の側で(v4.8を使用して)いくつかのテストを行った後、それは私が見つけることができる唯一の条件であり、余分な改行が追加されています。コードの前にかみそりのコメント(@* ... *@)を使用すると、改行も追加されます。


クラスをタグに追加する別の方法は、次のようにかみそりでタグを書き出すことです。

<umbraco:Macro language="cshtml" runat="server">
@{
    string bodyClass = "not-front";

    if ((Model.NodeTypeAlias == "WLHomePage" ) ||
        (Model.NodeTypeAlias == "WLHomeSubPage" ))
    {
        bodyClass = "front";
    }

    @:<body class="@bodyClass">
}
</umbraco:Macro>

    ...

</body>
于 2012-08-06T18:43:02.353 に答える
0

私の仲間の.NET開発者はこれをクラックしました:それは最初の行の空白です。次のように、変数を上に移動します。

   @{ var bodyClass = "";

そして>poof<空白がなくなりました。

それで、これはアンブラコのバグですか?

皆さんありがとう!

于 2012-08-06T20:40:50.530 に答える