如何在Razor中声明局部variables?

我正在开发一个在asp.net mvc 3中的Web应用程序。我对它很新。 在使用剃刀的视图中,我想声明一些局部variables并在整个页面中使用它。 如何才能做到这一点?

能够做到以下行为似乎相当微不足道:

@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> } 

但是这不起作用。 这可能吗?

我觉得你非常接近,试试这个:

 @{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> } 

我认为这个variables应该在同一个块中:

 @{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> } } 

你也可以使用:

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

代码中不需要variables

如果你正在寻找一个intvariables,随着代码的循环而增加,你可以使用这样的东西:

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

不是OP的问题的直接答案,但它也可以帮助你。 您可以在范围内的某个html旁边声明一个局部variables,而不会有任何困难。

 @foreach (var item in Model.Stuff) { var file = item.MoreStuff.FirstOrDefault(); <li><a href="@item.Source">@file.Name</a></li> }