私は再帰的に何かをレンダリングするために使用されるcshtmlパーシャルビュー(Razorエンジン)を持っています。私はこのビューで定義された2つの宣言的なHTMLヘルパー関数を持っており、それらの間で変数を共有する必要があります。つまり、ビューレベルの変数(関数レベルの変数ではない)が必要です。ASP.NET MVCでビューレベルの変数を定義する方法は?
@using Backend.Models;
@* These variables should be shared among functions below *@
@{
List<Category> categories = new ThoughtResultsEntities().Categories.ToList();
int level = 1;
}
@RenderCategoriesDropDown()
@* This is the first declarative HTML helper *@
@helper RenderCategoriesDropDown()
{
List<Category> rootCategories = categories.Where(c => c.ParentId == null).ToList();
<select id='parentCategoryId' name='parentCategoryId'>
@foreach (Category rootCategory in rootCategories)
{
<option value='@rootCategory.Id' class='[email protected]'>@rootCategory.Title</option>
@RenderChildCategories(rootCategory.Id);
}
</select>
}
@* This is the second declarative HTML helper *@
@helper RenderChildCategories(int parentCategoryId)
{
List<Category> childCategories = categories.Where(c => c.ParentId == parentCategoryId).ToList();
@foreach (Category childCategory in childCategories)
{
<option value='@childCategory.Id' class='[email protected]'>@childCategory.Title</option>
@RenderChildCategories(childCategory.Id);
}
}
本当ですか?変数を共有できないのは本当にばかげているということです。私は、かみそりのビューをスコープと考えています。このスコープで変数を定義できると思います。この答えは私がやりたいことをするのに役立ちましたが、私はそれについては分かりません。とにかく助けてくれてありがとう。 :) –