在*_Imports.razor*文件中使用时,指定生成的类或名称空间前缀的名称空间。该@namespace指令现在适用于页面和视图(.cshtml)应用程序,但现在它也支持组件(.razor)。
@namespace MyNamespace 标记@functions和本地功能在视图和页面(.cshtml文件)中,您现在可以在@functions块和本地函数中的方法内添加标记。
@{ GreetPerson(person); } @functions { void GreetPerson(Person person) { <p>Hello, <em>@person.Name!</em></p> } } Blazor指令属性Blazor使用各种属性来影响组件的编译方式(例如ref,bind,事件处理程序等)。随着时间的推移,这些属性已经有机地添加到Blazor并使用不同的语法。在这个Blazor版本中,我们已经标准化了指令属性的通用语法。这使得Blazor使用的Razor语法更加一致和可预测。它还为未来的可扩展性铺平了道路。
指令属性都遵循以下语法,其中括号中的值是可选的:
@directive(-suffix(:name))(="value")一些有效的例子:
<!-- directive --> <div @directive>...</div> <div @directive="value"></div> <!-- directive with key/value arg--> <div @directive:key>...</div> <div @directive:key="value"></div> <!-- directive with suffix --> <div @directive-suffix></div> <div @directive-suffix="value"></div> <!-- directive with suffix and key/value arg--> <div @directive-suffix:key></div> <div @directive-suffix:key="value"></div>所有Blazor内置指令属性都已更新为使用此新语法,如下所述。
事件处理程序
在Blazor中指定事件处理程序现在使用新的指令属性语法而不是普通的HTML语法。语法类似于HTML语法,但现在具有前导@字符。这使得C#事件处理程序与JS事件处理程序不同。
<button @onclick="@Clicked">Click me!</button>为C#事件处理程序指定委托时,@属性值当前仍需要前缀,但我们希望在将来的更新中删除此要求。
在将来,我们还希望使用指令属性语法来支持事件处理程序的其他功能。例如,停止事件传播可能看起来像这样(尚未实现,但它让您了解现在由指令属性启用的方案):
<button @onclick="Clicked" @onclick:stopPropagation>Click me!</button>捆绑
<input @bind="myValue">...</input> <input @bind="myValue" @bind:format="mm/dd">...</input> <MyButton @bind-Value="myValue">...</MyButton>键
<div @key="id">...</div>参考
<button @ref="myButton">...</button> Blazor应用程序的身份验证和授权支持Blazor现在内置了对处理身份验证和授权的支持。服务器端Blazor模板现在支持使用ASP.NET Core Identity,Azure AD和Azure AD B2C启用所有标准身份验证配置的选项。我们还没有更新Blazor WebAssembly模板以支持这些选项,但我们计划在.NET Core 3.0发布之后这样做。
要创建启用了身份验证的新Blazor应用程序:
创建一个新的Blazor(服务器端)项目,然后选择链接以更改身份验证配置。例如,选择“个人用户帐户”和“在应用程序中存储用户帐户”以将Blazor与ASP.NET Core Identity一起使用:
运行应用程序。该应用程序包含顶行中的链接,用于注册为新用户并登录。
选择“注册”链接以注册新用户。
选择“应用迁移”以将ASP.NET Core Identity迁移应用于数据库。
你现在应该登录了。
选择您的用户名以编辑您的用户个人资料。