使用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>
有没有人有更好的建议?
答案 0 :(得分:2)
作为替代方案:
<div class="selected-@(main == "archive" ? "true" : "false")"></div>
答案 1 :(得分:1)
为什么不将此类作为视图模型的一部分,例如
public string MainClass {
get {
if(main=="archive") return "True";
return "False";
}
}
并在您的视图中使用此
<div class="selected-@MainClass"></div>
Razor2对它的视图编译更严格。
答案 2 :(得分:0)
我的错误或非问题在这里得到解答:https://stackoverflow.com/a/13455272/533460
这不是一个bug,它是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)指出我的答案。