2011-03-04 137 views
12

cómo iba a hacer el equivalente de esta incrustado en JavaScript en una página MVC2 aspx:Cómo incrustar C# código en javascript cshtml página MVC3 Razor

if (('<%= Model.SomeFunctionEnabled %>' == 'True') y también un bloque de código de función entero en una página de vista de la maquinilla de afeitar (cshtml) en MVC3?

Algo así como:

@{ 
    foreach(var d in Model.Employees) 
    { 
     .... 
    } 
} 

que funciona muy bien cuando está incrustada en la parte HTML de la página de vista. Gracias

Respuesta

30

Por qué las pruebas en el lado del cliente cuando se podría hacer esto en el lado del servidor e incluir el código JavaScript para actuar en consecuencia si la prueba tiene éxito:

<script type="text/javascript"> 
    @if (Model.SomeFunctionEnabled) { 
     <text> 
     // Put your javascript code here 
     alert('the function is enabled'); 
     </text> 
    } 
</script> 
+0

Gracias Darin, a veces quiero mantener el código de visualización en la vista. Sin embargo, me he dado cuenta de que es solo un marcador de sintaxis VS 'que no funciona correctamente para esto, ¡está realmente bien! – stan4th

+0

@ stan4th, OK, pero en su ejemplo en la sentencia 'if' usted estaba mezclando el código del lado del servidor con javascript por lo que es difícil de leer. Es por eso que te sugerí una mejora. –

+0

@DarinDimitrov - Quiero renderizar algunos HTML en línea como a continuación ... ' 'Puede hacer correcciones. En este momento no puedo agregar etiquetas HTML dentro de las condiciones If. – SMC

0

Si desea ejecutar la lógica de JavaScript:

if ('@Model.SomeFunctionEnabled' == 'True') { 
} 

Pero esto da como resultado una condición que siempre se evalúa con el mismo resultado. Así que estás mejor con la respuesta de Darin para hacer toda la prueba en el servidor.

Si su prueba es, sin embargo, algo dinámico como este, que no se puede ejecutar en el servidor. Puede obtener el contenido de su variable C# utilizando un signo @.

@{ 
    var elementID = GetMyGeneratedElementID(); 
} 

<div id="@elementID">...</div> 
<script> 
    function MyAmazingJavascriptElementHandler() { 
     if ($("#@elementID").SomeTest()) { 
      DoMyAmazingJavascript(); 
     } 
    } 
</script> 
Cuestiones relacionadas