Как проверить, существует ли представление razor, но в ASP.NET Основные страницы Бритвы?

#c# #asp.net #asp.net-mvc #asp.net-core #razor

Вопрос:

Я знаю, что мы можем использовать этот код, чтобы узнать, определено ли представление уже или нет:

 ViewEngine.FindView(ViewContext, $"NameOfPartialView", isMainPage: false).Success
 

Но я использую ASP.NET Основные страницы Razor, и я смешиваю их с простыми представлениями razor.
Эта строка возвращает значение false, пока есть представление.

Моя иерархия проектов выглядит следующим образом:

  • Страницы
    • Галерея
      • Список.cshtml
        • Список.cshtml.cs
      • Увеличитель.cshtml

Как вы можете видеть, List.cshtml это страница бритвы. За этим стоит код. Но Augmenter.cshtml это простой вид бритвы, без кода.

А внутри List.cshtml я хочу проверить, Augmenter.cshtml существует он или нет.

Этот код не сработал для меня. Что мне делать?

Ответ №1:

Вот демонстрационная версия, которая может работать в моем проекте:

структура:

введите описание изображения здесь

List.cshtml(вам нужно убедиться,что viewName FindView ввод правильный, вы можете передать ему только имя представления без .cshtml):

 @using Microsoft.AspNetCore.Mvc.ViewEngines;
@inject ICompositeViewEngine Engine
@if (Engine.FindView(ViewContext, "Augmenter", isMainPage: false).Success)
{
    <p>exist</p>
}
 

Результат:
введите описание изображения здесь