ASP.NET MVC3 RC RAZOR VISTAS: Sintaxe para incorporar código dentro de Bloco

StackOverflow https://stackoverflow.com/questions/4204669

  •  25-09-2019
  •  | 
  •  

Pergunta

Tendo problemas para incorporar o código C# dentro de um bloco JavaScript com MVC3 RC1 Vista de barbear. Que sintaxe devo usar para fazer isso funcionar? Eu recebo avisos, por exemplo. Constante esperado na variável ISOK entre outros. (Sem tag de texto, o código a seguir não é reconhecido como JavaScript)

@{bool isOk = true;}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOk)
    { 
        <text>
            var tmp=""; // this should be interpreted as javascript
        </text>       
    }
</script>
Foi útil?

Solução

Você precisa do <text> tag para indicar que o conteúdo não é avaliado no servidor. Por exemplo:

@{
    var isOK = true;
}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOK)
    { 
        <text>
            var tmp = "foo";
        </text>       
    }
</script>

será lançado na página resultante:

<script type="text/javascript">
    var tmp1 = "";
    var tmp = "foo";
</script>

Na medida em que Expected Constant O aviso está preocupado, bem, o Razor Intellisense ainda está na versão beta, por isso está longe de ser perfeito. É apenas um aviso que você pode ignorar com segurança. O importante é o que o aplicativo funciona e emite HTML válido. Espero que isso seja algo que seja corrigido no produto final. Da experiência pessoal, os únicos avisos em que confio são os emitidos pelo compilador C#. Quando estou trabalhando em uma visão, ignoro com segurança todos os avisos de baixa qualidade que o Visual Studio emite porque sei que está errado.

Outras dicas

Uma alternativa (mais concisa e mais fácil de ler IMO) é escapar de volta ao texto da seguinte maneira:

<script type="text/javascript"> 
    var tmp1 = ""; 
    @if (isOK) 
    {  
        @:var tmp = "foo";
    } 
</script> 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top