は、私は(それが動作しません)次のよう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>
}
}
私が言ったように、これは動作しません。コレクションに何もない場合は、セクションを定義しません。この作品のようなものを持つ方法はありますか?そうでない場合、私の他の選択肢は何ですか?私はこのRazor ViewEngineの新機能です。私は持っている私のレイアウトでは
編集
:セクションが空の場合
@if(IsSectionDefined("ContentRight"))
{
<div class="right">
RenderSection("ContentRight")
</div>
}
私はしたくない何を出力するdiv要素です。
残念ながら、これは現在おそらくあなたの最善の選択肢です。もう一つの可能なオプションは、 "@ section"が翻訳されたものであるDefineSectionを直接呼び出そうとすることです。問題は、Razor v2のラムダ内にMarkupを置くことができないということです(私たちが将来見ているもの)。@helperコンストラクトでコンテンツを定義し、そのヘルパーをDefineSectionラムダから呼び出さなければならない。結局のところ、それはあなたが持っているようにそれをするのが簡単になるかもしれません。しかし、今後のバージョンでこれを改善する予定です! –