@inherhits в бритвенных файлах с ASP. NET Core 3.1 - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь использовать пользовательский базовый класс для моих бритвенных файлов в 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

Также метод Checkbox не распознан правильно.

enter image description here

При компиляции отображается следующая ошибка:

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?). Это верно? Есть ли способ правильно использовать пользовательский базовый класс с поддержкой редактором?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...