У меня есть частичное представление, и в нем нет никаких следов наследования от любого макета. Но всякий раз, когда я хочу использовать его (визуализировать) внутри представления, макет повторяется один раз для представления и один раз для частичного представления. В этом посте предлагается создать пустой макет. Но я думаю, что это обходной путь. Есть ли в любом случае остановить загрузку макета (мастер-макета) для частичных видов. Я не понимаю, почему, когда нет кода для использования основного макета, почему он должен быть загружен. Это все равно что создать страницу в ASP.NET и увидеть, что она наследуется от главной страницы без директивы <%@ Master ...
.
Это мой частичный взгляд:
@* Recursive category rendering *@
@using Backend.Models;
@{
List<Category> categories = new ThoughtResultsEntities().Categories.ToList();
int level = 1;
}
@RenderCategoriesDropDown(categories, level)
@helper RenderCategoriesDropDown(List<Category> categories, int level)
{
List<Category> rootCategories = categories.Where(c => c.ParentId == null).ToList();
<select id='categoriesList' name='categoriesList'>
@foreach (Category rootCategory in rootCategories)
{
<option value='@rootCategory.Id' class='level-1'>@rootCategory.Title</option>
@RenderChildCategories(categories, level, rootCategory.Id);
}
</select>
}
@helper RenderChildCategories(List<Category> categories, int level, int parentCategoryId)
{
string padding = string.Empty;
level++;
List<Category> childCategories = categories.Where(c => c.ParentId == parentCategoryId).ToList();
foreach (Category childCategory in childCategories)
{
<option value='@childCategory.Id' class='level-@level'>@padding.PadRight(level, '-') @childCategory.Title</option>
@RenderChildCategories(categories, level, childCategory.Id);
}
level--;
}