How to use ? : if statements with Razor and inline code blocks

前端 未结 4 477
再見小時候
再見小時候 2020-12-07 15:26

I\'m updating my old .aspx views with the new Razore view engine. I have a bunch of places where I have code like this:



        
相关标签:
4条回答
  • 2020-12-07 15:39

    This should work:

    <span class="vote-up@(puzzle.UserVote == VoteType.Up ? "-selected" : "")">Vote Up</span>
    
    0 讨论(0)
  • 2020-12-07 15:44
    @( condition ? "true" : "false" )
    
    0 讨论(0)
  • 2020-12-07 15:47

    The key is to encapsulate the expression in parentheses after the @ delimiter. You can make any compound expression work this way.

    0 讨论(0)
  • 2020-12-07 15:51

    In most cases the solution of CD.. will work perfectly fine. However I had a bit more twisted situation:

     @(String.IsNullOrEmpty(Model.MaidenName) ? "&nbsp;" : Model.MaidenName)
    

    This would print me "&nbsp;" in my page, respectively generate the source &amp;nbsp;. Now there is a function Html.Raw("&nbsp;") which is supposed to let you write source code, except in this constellation it throws a compiler error:

    Compiler Error Message: CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between 'System.Web.IHtmlString' and 'string'

    So I ended up writing a statement like the following, which is less nice but works even in my case:

    @if (String.IsNullOrEmpty(Model.MaidenName)) { @Html.Raw("&nbsp;") } else { @Model.MaidenName } 
    

    Note: interesting thing is, once you are inside the curly brace, you have to restart a Razor block.

    0 讨论(0)
提交回复
热议问题