Библиотека классов Razor и проблема с html-помощниками - PullRequest
0 голосов
/ 14 апреля 2019

Я создал небольшой инструмент администратора и решил преобразовать его в библиотеку классов Razor, чтобы иметь возможность использовать его и в других приложениях.Я создал проект библиотеки классов Razor и добавил все страницы с бритвами, которые были в моем основном проекте, и попытался протестировать новый проект.Проблема заключалась в том, что фреймворк по какой-то причине не распознал помощников html, поэтому я создал новый чистый проект и попытался выяснить, что не так, и в результате приложение не запустило действие post на странице бритвы и asp- для свойства не было правильно использовано значение свойства.Я использовал следующий код для проверки библиотеки классов Razor.

Page1.cshtml.cs

public class Page1Model : PageModel
{
    [BindProperty]
    public Input MyInput { get; set; }

    public class Input
    {
        public string Name { get; set; }
    }
    public void OnGet()
    {

    }

    public void OnPost()
    {

    }
}

Page1.cshtml

@page
@model WebApplication1.MyFeature.Pages.Page1Model

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Page1</title>
</head>
<body>
    <form method="post">
        <input asp-for="MyInput.Name" /><br />
        <input type="submit" />
    </form>
</body>
</html>

Сгенерированный HTML былследующее

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Page1</title>
</head>
<body>
    <form method="post">
        <input asp-for="MyInput.Name" /><br />
        <input type="submit" />
    </form>
</body>
</html>

Как вы видите, ввод для MyInput.Name отображается так, как я его набрал, файл Page1.cshtml.Правильный вывод должен быть следующим:

<input type="text" id="MyInput_Name" name="MyInput.Name" value="" /><br />

Нужно ли что-то делать, чтобы заставить работать помощники html, и вызывать действие OnPost при поступлении почтового запроса?

1 Ответ

0 голосов
/ 14 апреля 2019

Я нашел решение проблемы и решил поделиться им с вами на тот случай, если у кого-то еще возникнет такая же проблема.

Чтобы это работало, мне нужно было добавить файл _ViewImports.cshtml в папку страниц библиотеки классов Razor и добавить следующую строку:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
...