은 내가 (작동하지 않는) 다음에 Page.cshtml 비슷한 있습니다asp.net mvc Razor ViewEngine을 사용하여 @section을 선택적으로 만들 수있는 방법이 있습니까?
@{
Layout = "../Shared/Layouts/_Layout.cshtml";
var mycollection = (ViewBag.TheCollection as IQueryable<MyCollectionType>);
}
<h2>@ViewBag.Title</h2>
content here
@if (mycollection != null && mycollection.Count() > 0)
{
@section ContentRight
{
<h2>
Stuff
</h2>
<ul class="stuff">
@foreach (MyCollectionType item in mycollection)
{
<li class="stuff-item">@item.Name</li>
}
</ul>
}
}
내가 말했듯이,이 작동하지 않습니다. 컬렉션에 아무것도없는 경우 섹션을 정의하지 않으려합니다. 이 작품과 같은 것을 가질 수있는 방법이 있습니까? 그렇지 않다면 다른 옵션은 무엇입니까? 나는이 면도기 ViewEngine을 처음 사용했습니다. 내 레이아웃에서
편집
는 내가 가지고 : 섹션이 비어있을 때
@if(IsSectionDefined("ContentRight"))
{
<div class="right">
RenderSection("ContentRight")
</div>
}
는 내가 원하는 않는다 출력 사업부입니다.
불행히도 그것은 아마도 현재 가장 좋은 선택 일 것입니다. 또 다른 가능한 옵션은 "@section"이 번역 된 DefineSection을 직접 호출하는 것입니다. 문제는 Razor v2에서 람다 안에 Markup을 넣을 수 없다는 것입니다 (앞으로 살펴볼 내용). @helper 구문에서 콘텐츠를 정의하고 DefineSection 람다에서 해당 도우미를 호출해야합니다. . 결국, 당신이 가진 방식대로하는 것이 더 쉽게 끝날 수도 있습니다. 그러나 우리는 차후 버전에서 이것을 향상시킬 것입니다! –