[C#] Razor에서 지역 변수를 선언하는 방법?

asp.net mvc 3에서 웹 응용 프로그램을 개발 중입니다. 매우 익숙합니다. 면도기를 사용하는 관점에서 로컬 변수를 선언하고 전체 페이지에서 사용하고 싶습니다. 어떻게 할 수 있습니까?

다음과 같은 작업을 수행하는 것이 사소한 것 같습니다.

@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의 문제에 대한 직접적인 대답은 아니지만 도움이 될 수도 있습니다. 범위 내에서 일부 HTML 옆에 로컬 변수를 문제없이 선언 할 수 있습니다.

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

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


답변

페이지에서 액세스 할 var를 선언합니다. 페이지 상단에서 일반적으로 작동합니다. 암시 적 또는 명시 적 선택.

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


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


답변

블록에 모든 것을 넣고 블록 아래에 원하는 코드를 정확히 아래 코드로 쉽게 작성할 수 있습니다.

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

처음에는 깔끔한 코드를 만드는 데 도움이되며 페이지가 여러 번 다른 코드 블록을로드하지 못하게 할 수 있습니다