在 Blazor Server 开发中,为了使控制器生效,需要在程序启动时添加服务,并通过依赖注入将其注入到控制器中。以下是一个示例代码:
Startup.cs 文件:
// 添加 MVC 服务
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
Controller.cs 文件:
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
[HttpGet]
public string Get()
{
return "Hello, World!";
}
}
注意,在控制器类上需要添加 [Route] 和 [ApiController] 属性。通过添加 [Route] 属性,可以指定控制器的路由地址,让请求能够正确地到达控制器;[ApiController] 属性可以自动校验请求参数,返回 400 状态码等信息。
此外,还需要在 Razor 页面的代码中添加对控制器类的引用,可以使用 @inject 指令:
@inject TestController testController
@code {
private string message = "";
private async Task GetMessage()
{
message = await testController.GetMessage();
}
}
通过将控制器类注入到 Razor 页面中,可以在页面中直接调用控制器类中的方法,获取数据等操作。