web-dev-qa-db-ja.com

Razorでローカル変数を宣言する方法

私は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>
}

しかしこれはうまくいきません。これは可能ですか?

318
vondip

私はあなたがかなり親密だったと思います、これを試してください:

@{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>
}
469
Tomas Jansson

変数は同じブロック内にあるべきだと思います。

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

また使用することができます:

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

コード内に変数は必要ありません

17
marcel

コードがループするにつれて増加するint型の変数を探しているなら、このようなものを使うことができます。

@{
  int counter = 1;

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

OPの問題に対する直接的な答えではありませんが、それはあなたを助けるかもしれません。あなたは問題なくスコープ内のいくつかのhtmlの隣にローカル変数を宣言することができます。

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

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

ページ全体に渡ってアクセスされるようにvarを宣言する....ページのトップは通常うまくいきます。暗黙的または明示的にあなたの選択。

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


            @something1 //to display on the page
            @something2 //to display on the page
1
d384