Implementing a switch statement in a CSHTML page

后端 未结 4 1307
谎友^
谎友^ 2021-02-03 16:32

I\'m trying to do something different. I have a view that contains an Id. Based on the value of the Id I want to change my heading that appears. Something like:

         


        
相关标签:
4条回答
  • 2021-02-03 17:19

    This doesn't answer your question, as indicated by the question's title, but it does solve the problem you described in the body of the question.

    Use a view model class as the view's model and add a method that includes the switch statement. Then just call the method from the view via @Model.MethodWithSwitchStatement(). [The id can be saved in the view model object.]

    0 讨论(0)
  • 2021-02-03 17:25
    @{
        String txt;
        switch (id) {
            case "test":
                txt = "Test";
                break;
            case "prod":
                txt = "Prod";
                break;
            default:
                txt = "WTF";
        }
    }
    
    <h1>@txt Site</h1>
    

    The Most Concise: Less redundant or repetitive code and markup.

    0 讨论(0)
  • 2021-02-03 17:33

    Your switch needs to be completely enclosed in a block and it needs to be "broken" properly:

    // Use the @{ } block and put all of your code in it
    @{
        switch(id)
        {
            case "test":
                // Use the text block below to separate html elements from code
                <text>
                    <h1>Test Site</h1>
                </text>
                break;  // Always break each case
            case "prod":
                <text>
                    <h1>Prod Site</h1>
                </text>
                break;
            default:
                <text>
                    <h1>WTF Site</h1>
                </text>
                break;                   
        }
    }
    

    Because the <h1> tags are enclosed html blocks by themselves, you may not need the <text> blocks for separation. It's just my habit to include them.

    0 讨论(0)
  • 2021-02-03 17:37
    @switch (id)
    {
        case "test": <h1>Test Site</h1>
        break;
        case "prod": <h1>Prod Site</h1>
        break;
    }
    

    There is no need to enclose the entire switch statement in a @{} block, (unlike Joel Etherton's post)

    Your errors are basically regular syntax errors and have nothing to do with razor;

    1. the variable wasn't in parenthesis

    2. the body of switch wasn't in brackets

    3. no "break" after the first statement.

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