Я создал небольшой инструмент администратора и решил преобразовать его в библиотеку классов 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 при поступлении почтового запроса?