5

タグでスタイル属性を条件付きで出力したい、例えば: <li style="@styleVar" >...</li> styleVar が null の場合、それはかみそりで書かれるべきではありません (Razor 2 の標準機能と思われます) が、何らかの奇妙な理由で として出力されますが<li style="">...</li>、私は期待してい<li>...</li>ます。

これは部分的なビューです。通常のビューでは、機能しています。これは部分ビューのバグですか?

同じ経験した人いますか?

4

6 に答える 6

9

これは、部分ビューや data-test="@test" などのカスタム html 属性では機能しないようです。これは省略されず、代わりに data-test="" に入れられます。したがって、MVC チームはこれを早急に修正する必要があります。

于 2013-07-25T01:03:19.740 に答える
6

styleVarが等しいnull(ではない)場合、string.Emptymvc4 は自動的にこれを行います。

条件付き属性のレンダリング

null の可能性がある属性がある場合、以前は、次のように空の属性を書き出さないように null チェックを行う必要がありました。

<div @{if (myClass != null) { <text>class="@myClass"</text> } }>Content</div>

Razor はそれを自動的に処理できるようになったので、属性を書き出すだけで済みます。null の場合、属性は書き込まれません。

<div class="@myClass">Content</div>

したがって、@myClass が null の場合、出力は次のようになります。

<div>Content</div>
于 2013-01-19T15:49:20.403 に答える
1

コードにエラーは表示されません。マークアップを「ハード コード」し、スタイル値のみを変更します。やろうとしていることを達成するには、次のようなコードが必要です。

@if(!string.IsNullOrEmpty(styleVar))
{
  <li style="@styleVar" >...</li>
}
于 2012-11-07T10:27:58.823 に答える
0

別の考えられる原因は、HTML タグ内の Razor コメントです。

// This renders <div>Hello world</div>
<div class="@null">Hello world</div>

// Renders <div  class="">Hello world</div>
<div @**@ class="@null">Hello world</div>

テスト目的で単一の属性をコメントアウトしたときに、突然条件付き属性が壊れてしまったときに、これに遭遇しました。

于 2014-03-06T10:16:45.167 に答える
-1

部分ビューと通常ビューで(少なくとも mvc3 を使用して)いつ取得するstyleVar == nullか。<li style="">...

条件演算子を使用する必要があると思います:

<li @(styleVar == null ? "" : "style=\"" + styleVar + "\"")>...</li>
于 2012-11-07T10:44:23.790 に答える