Я думаю, что вы можете пропустить регистрацию TestViewModel в Startup.ConfigureServices
Вы можете перейти по этой ссылке: https://docs.microsoft.com/en-us/aspnet/core/tutorials/build-your-first-blazor-app?view=aspnetcore-3.0, чтобы узнать больше.
Если вы хотите, чтобы Blazor работал на IE11,пожалуйста, добавьте Polyfills. Перейдите по этой ссылке: https://github.com/Daddoon/Blazor.Polyfill, чтобы узнать больше.
Вы можете скачать Polyfills здесь: https://github.com/Daddoon/Blazor.Polyfill/releases
Вот пример после вашего вопроса. Надеюсь помочь, мой друг :))
1) Модели
namespace BlazorApp.Models
{
public class TestViewModel
{
public string Search { get; set; }
public async void SearchChanged()
{
// Break point set but not hit?
Search = "Hello world";
}
}
}
2) В классе запуска
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<WeatherForecastService>();
services.AddSingleton<Models.TestViewModel>();
}
3) Просмотр
@page "/testview"
@inject Models.TestViewModel VM
<h1>Test Blazor</h1>
<div>
Search:
<input id="search" type="text" @bind="VM.Search" @onkeypress="@VM.SearchChanged" />
<span>@VM.Search</span>
</div>
4) В _Host представлении
@page "/"
@namespace BlazorApp.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BlazorApp</title>
<base href="~/" />
<link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
<link href="css/site.css" rel="stylesheet" />
</head>
<body>
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>
<script src="~/scripts/blazor.polyfill.min.js"></script>
<script src="_framework/blazor.server.js"></script>
</body>
</html>