2

MVC3ソリューションをRazor2を使用してMVC4にアップグレードした後、次の問題が発生しました。

ビュー内のこのコード

@{
    string main = "archive";
}
    <div class="selected-@(main == "archive")"></div>

これをMVC3で返します

<div class="selected-True"></div>

そしてこれはMVC4で

<div class="selected-class"></div>

これは私のCSSを壊します。

これは、Razor 2の新しい条件付き属性機能によって導入されたバグですか?

私の回避策はこれです:

<div class="selected-@((main == "archive").ToString())"></div>

これを返します:

<div class="selected-True"></div>

誰かがより良い提案がありますか?

4

3 に答える 3

2

代替として:

<div class="selected-@(main == "archive" ? "true" : "false")"></div>
于 2012-11-19T10:05:05.127 に答える
1

このクラスをビューモデルの一部として使用してみませんか。

public string MainClass {
            get { 
                if(main=="archive") return "True";
                return "False";
            }
}

これをビューで使用します

<div class="selected-@MainClass"></div>

Razor2は、ビューのコンパイルに関してより厳密です。

于 2012-11-19T09:49:32.067 に答える
0

私のバグかどうかの質問はここで答えられます:https ://stackoverflow.com/a/13455272/533460

これはバグではなく、Razor2の新機能です。

私のコードで起こっていることはこの原則に基づいています

<input checked="@ViewBag.Checked" type="checkbox"/>

になります

<input checked="checked" type="checkbox"/>

ViewBag.Checked==trueの場合。

それで

<div class="@(main == "archive")"></div>

になります

<div class="class"></div>

答えを教えてくれた@webdeveloper(https://stackoverflow.com/users/1667969/webdeveloper)に感謝します。

于 2012-11-19T14:35:15.757 に答える