说我有这个:
SomePage.razor:
@inject Something something
@page "/somepage"
<h1> My Page </h1>
@code {
// Using "Something" here ...
}这样做有什么根本区别吗?
AnotherPage.razor:
@page "/anotherpage"
<h1> My Page </h1>
@code {
[Inject]
Something something { get; set; }
// Using "Something" here ...
}或者两者的工作原理是一样的,而这只是“程序员偏好”吗?
发布于 2021-04-16 14:07:49
关于@Yasseros答复的增编:
这是一个演示Razor文件-Pages/Inject.剃刀
@page "/inject"
@namespace Microsoft.AspNetCore.Components
@inject NavigationManager NavManager1
<h1>Hello, world!</h1>
@code {
[Inject] private NavigationManager NavManager2 { get; set; }
[InjectAttribute] private NavigationManager NavManager3 { get; set; }
},它将预编译到obj/debug/net5.0/Razor/Pages/Inject.razor.g.cs的obj文件夹结构中可查看的以下C#文件。
[Microsoft.AspNetCore.Components.RouteAttribute("/inject")]
public partial class Inject : Microsoft.AspNetCore.Components.ComponentBase
{
protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
{
__builder.AddMarkupContent(0, "<h1>Hello, world!</h1>");
}
[Inject] private NavigationManager NavManager2 { get; set; }
[InjectAttribute] private NavigationManager NavManager3 { get; set; }
[global::Microsoft.AspNetCore.Components.InjectAttribute] private NavigationManager NavManager1 { get; set; }
}@inject是Razor属性标记语法,它被转换为C#属性语法。这同样适用于@page转换为类上的RouteAttribute语法。
https://stackoverflow.com/questions/67125885
复制相似问题