2011-07-06 34 views
275

Estoy desarrollando una aplicación web en asp.net mvc 3. Soy muy nuevo en esto. En una vista usando una afeitadora, me gustaría declarar algunas variables locales y usarlas en toda la página. ¿Cómo puede hacerse esto?¿Cómo declarar una variable local en Razor?

parece bastante trivial para ser capaz de hacer la siguiente acción:

@bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName); 
@if (isUserConnected) 
{ // meaning that the viewing user has not been saved 
    <div> 
     <div> click to join us </div> 
     <a id="login" href="javascript:void(0);" style="display: inline; ">join</a> 
    </div> 
} 

Pero esto no funciona. es posible?

Respuesta

404

Creo que eran bastante estrecha, intente esto:

@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);} 
@if (isUserConnected) 
{ // meaning that the viewing user has not been saved 
    <div> 
     <div> click to join us </div> 
     <a id="login" href="javascript:void(0);" style="display: inline; ">join</a> 
    </div> 
} 
+0

oh, estaba intentando todos los trabajos posibles, pero esto. Gracias Tomas! – vondip

+0

¿Cómo se hace esto en VB.NET? –

+4

oh, lo encontré por mi cuenta: '@Code .. End Code' en lugar de' @ {..} ' –

40

Creo que la variable debe estar en el mismo bloque:

@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName); 
    if (isUserConnected) 
    { // meaning that the viewing user has not been saved 
     <div> 
      <div> click to join us </div> 
      <a id="login" href="javascript:void(0);" style="display: inline; ">join</a> 
     </div> 
    } 
    } 
+0

Ese parece ser el caso, al menos en MVC3. –

+0

¡Excelente! ¿Alguna idea de cómo usaría la variable 'isUserConnected' otra vez más abajo en la página? – SharpC

+0

@SharpC Una vez que declara una variable como esa, está disponible en el resto de ese archivo .cshtml. Más adelante en el archivo podría hacer algo como '@if (isUserConnected) {/ * cosas si está conectado * /}' o '

Connected? @isUserConnected
' (esto funciona mejor con strings). Sin embargo, no está disponible fuera de ese archivo (por ejemplo, tendrá que declararlo por separado en los parciales). –

17

También puede utilizar:

@if(string.IsNullOrEmpty(Model.CreatorFullName)) 
{ 
...your code... 
} 

No hay necesidad de una variable en el código

+1

Esto no proporciona una respuesta a la pregunta. –

8

Si lo que buscas es una variable int, uno que se incrementa como los bucles de código, puede usar algo como esto:

@{ 
    int counter = 1; 

    foreach (var item in Model.Stuff) { 
    ... some code ... 
    counter = counter + 1; 
    } 
} 
2

No es una respuesta directa al problema de OP, pero puede ayudar a usted también. Puede declarar una variable local junto a algún html dentro de un alcance sin problemas.

@foreach (var item in Model.Stuff) 
{ 
    var file = item.MoreStuff.FirstOrDefault(); 

    <li><a href="@item.Source">@file.Name</a></li> 
} 
0

para declarar que se puede acceder a una var en la página .... la parte superior de la página suele funcionar. implícita o explícitamente su elección.

  @{ 
       //implicit 
       var something1 = "something"; 
       //explicit 
       string something2 = "something"; 
      } 


      @something1 //to display on the page 
      @something2 //to display on the page 
Cuestiones relacionadas