Я пытаюсь использовать пользовательский базовый класс для моих бритвенных файлов в ASP. NET Core 3.1, используя @inherits
в файле cs html. К сожалению, Visual Studio 2019, как и msbuild, не распознают, что используется пользовательский базовый класс. Мне нужно использовать это на веб-сайте, который я хочу портировать с. NET 4.6.1 на. NET Core 3.1. С. NET 4.6.1 и ASP. NET это работает.
Вот действительно простой пример. Мой базовый класс выглядит следующим образом:
// Really simple base class just for demonstration purposes
public abstract class ViewBase
{
public MyHtmlHelper Html { get; } = new MyHtmlHelper();
public abstract Task ExecuteAsync();
// Just to make the compiler happy
public void WriteLiteral(string v) { }
public void Write(string v) { }
}
public class MyHtmlHelper
{
public string Checkbox() => "";
}
В то время как мой файл cs html выглядит следующим образом:
@inherits Example.ViewBase
@this.Html.CheckBox()
На следующем рисунке показано, что Visual Studio не понимает, что это представление должно быть производным от базового класса Example.ViewBase
. Свойство Html
должно иметь тип MyHtmlHelper
, но вместо этого оно показывает IHtmlHelper<dynamic>
.
![The property Html is not recognized correctly](https://i.stack.imgur.com/ApYYn.png)
Также метод Checkbox
не распознан правильно.
![enter image description here](https://i.stack.imgur.com/jPDL5.png)
При компиляции отображается следующая ошибка:
Error CS7036 There is no argument given that corresponds to the required formal parameter 'expression' of 'IHtmlHelper.CheckBox(string, bool?, object)'
Мне кажется, что при ASP. NET Основные виды бритвы 3.1 связаны с указанным c базовым классом (из MVC?). Это верно? Есть ли способ правильно использовать пользовательский базовый класс с поддержкой редактором?