剃刀引擎 - 如何根据不同的条件渲染不同的身体标签?

Jos*_*rth 12 razor asp.net-mvc-3

这是我目前的代码:

@{
    if (Request.Browser.Browser == "IE") {
        if (Request.Browser.MajorVersion == 7) { <body class="ie7"> }
        if (Request.Browser.MajorVersion == 8) { <body class="ie8"> }
        if (Request.Browser.MajorVersion == 9) { <body class="ie9"> }
        if (Request.Browser.MajorVersion > 9) { <body> }
    } else {
        <body>
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是浏览器尝试渲染时返回的错误:

分析器错误消息:代码块缺少结束"}"字符.确保此块中的所有"{"字符都有匹配的"}"字符,并且没有任何"}"字符被解释为标记.

有没有搞错?我能够在标准的ASP.NET模板语法中做到这一点!这是看起来像:

<% // Adaptation of paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
   if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion == 7) ) { %><body class="ie7"><% } %>
<% if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion == 8) ) { %><body class="ie8"><% } %>
<% if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion == 9) ) { %><body class="ie9"><% } %>
<% if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion > 9) ) { %><body><% } %>
<% if   (Request.Browser.Browser != "IE") { %><body><% } %>
Run Code Online (Sandbox Code Playgroud)

jru*_*ell 27

更好的选择可能是ieClass在视图顶部声明一个变量,然后在body标签中引用它.

@{
    string ieClass = "";
    if (Request.Browser.Browser == "IE") {
        if (Request.Browser.MajorVersion == 7) { ieClass="ie7"; }
        else if (Request.Browser.MajorVersion == 8) { ieClass="ie8"; }
        else if (Request.Browser.MajorVersion == 9) { ieClass="ie9"; }
    }
}
Run Code Online (Sandbox Code Playgroud)

...

<body class="@ieClass">
Run Code Online (Sandbox Code Playgroud)


Moh*_*yan 7

@if (Request.Browser.Browser == "IE" || Request.Browser.Browser == "InternetExplorer")
{

}
Run Code Online (Sandbox Code Playgroud)