C# - 在三元运算符中呈现部分

Bod*_*rov 1 c# asp.net partial-views conditional-operator

我正在使用三元运算符有条件地呈现页脚。我正在做@RenderPage,即使它有效,也意味着有一个控制器以及其他一些额外的代码。

我遇到了一个; expected错误,根据 StackOverflow 和一些文档,这是一个通用错误,可能是由许多不同的事情引起的。

我的语法正确吗?或者有什么我想念的吗?


// in this section is a switch statement that sets isNewFooter to true or false depending on which page has loaded.

 <div class="body-content">
    @RenderBody()

    @{
       (isNewFooter ? Html.RenderPartial("~/Views/Shared/NewFooter.cshtml") : Html.RenderPartial("~/Views/Shared/OldFooter.cshtml"))
     }

</div>
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 6

三元运算符用于计算不同的表达式,而不是执行不同的语句。你可以只使用一个标准if

if (isNewFooter) 
    Html.RenderPartial("~/Views/Shared/NewFooter.cshtml"); 
else
    Html.RenderPartial("~/Views/Shared/OldFooter.cshtml");
Run Code Online (Sandbox Code Playgroud)

或者,重构出常见的东西,以便您可以使用三元运算符:

Html.RenderPartial(String.Format("~/Views/Shared/{0}Footer.cshtml", (isNewFooter ? "New" : "Old"))); 
Run Code Online (Sandbox Code Playgroud)

使用其中任何一个对您来说更容易阅读和维护。

  • @Bodrov 我在这两种情况下都省略了分号。两者都应该修复该问题。 (2认同)