2

在使用 Razor 2 将我的 MVC 3 解决方案升级到 MVC 4 后,我遇到了以下问题。

视图中的此代码

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

在 MVC 3 中返回这个

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

这在 MVC 4 中

<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

我的 bug-or-not 问题在这里得到解答:https ://stackoverflow.com/a/13455272/533460

这不是错误,而是 Razor 2 的新功能!

我的代码中发生的事情是基于这个原则

<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 回答