我正在asp.net mvc 3中开发一个Web应用程序。 我很新。在使用剃刀的视图中,我想声明一些局部变量并在整个页面中使用它。怎么办呢?
能够执行以下操作似乎相当简单:
@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 :(得分:476)
我认为你非常接近,试试这个:
@{bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);}
@if (isUserConnected)
{ // meaning that the viewing user has not been saved so continue
<div>
<div> click to join us </div>
<a id="login" href="javascript:void(0);" style="display: inline; ">join here</a>
</div>
}
答案 1 :(得分:46)
我认为变量应该在同一个块中:
@{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>
}
}
答案 2 :(得分:17)
您也可以使用:
@if(string.IsNullOrEmpty(Model.CreatorFullName))
{
...your code...
}
代码中不需要变量
答案 3 :(得分:10)
如果你正在寻找一个int变量,一个随着代码循环递增的变量,你可以使用这样的东西:
This is a test
答案 4 :(得分:6)
不是OP问题的直接答案,但它也可能对您有所帮助。您可以在范围内的某个html旁边声明一个局部变量而不会出现问题。
@foreach (var item in Model.Stuff)
{
var file = item.MoreStuff.FirstOrDefault();
<li><a href="@item.Source">@file.Name</a></li>
}
答案 5 :(得分:1)
声明要在整个页面中访问的var ....页面顶部通常可以解决。隐含或明确的选择。
@{
//implicit
var something1 = "something";
//explicit
string something2 = "something";
}
@something1 //to display on the page
@something2 //to display on the page
答案 6 :(得分:0)
您可以将所有内容放入一个块中,然后在该块中轻松编写所需的任何代码,就可以恰好是以下代码:
@{
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>
}
}
它可以帮助您起初拥有更简洁的代码,还可以防止页面多次加载不同的代码块