繁体   English   中英

如何在 Razor 中声明一个局部变量?

[英]How to declare a local variable in Razor?

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

能够执行以下操作似乎相当微不足道:

@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 so continue
    <div>
        <div> click to join us </div>
        <a id="login" href="javascript:void(0);" style="display: inline; ">join here</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>
    }
    }

您还可以使用:

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

代码中不需要变量

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

@{
  int counter = 1;

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

不是对 OP 问题的直接回答,但它也可能对您有所帮助。 您可以毫无问题地在 scope 内的某个 html 旁边声明一个局部变量。

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

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

如果您希望在整个页面上都可以访问变量,则最好在文件顶部定义它。 (您可以使用隐式或显式类型。)

@{
    // implicit type
    var something1 = "something";

    // explicit type
    string something2 = "something";
}

<div>@something1</div> @*display first variable*@
<div>@something2</div> @*display second variable*@

您可以将所有内容放在一个块中,并轻松地在该块中编写您希望的任何代码,只需以下代码:

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

它可以帮助您首先获得更清晰的代码,还可以防止您的页面加载多次不同的代码块

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM