可能重复,但是我一直找不到任何东西。
我有一个asp.net核心MVC项目,该项目利用Razor使用普通视图。
我有一些ViewModel对象具有可为空的引用类型,并且我正在使用C#8 null-safety功能适当地标记这些对象(例如string? Name
)
我的问题是,当我在cshtml
文件中使用这些变量作为强类型模型时,因为没有为文件启用它,所以没有应用null安全性。
如果它是.cs
文件,我会将#nullable enable
放在顶部,但是如何处理剃须刀页面?
进行更新以澄清:如果可能的话,我希望在整个剃刀文件中的所有@code块上执行null安全警告。 Tân's answer展示了如何针对特定块启用它,但我想为类似的东西启用它
<span>@Model.Name.ToUpper()</span>
具体来说,我想对Name.ToUpper()发出警告,因为Name可为空,并且我没有使用?。调用ToUpper时的运算符
答案 0 :(得分:2)
您的问题中没有足够的信息说明您需要做什么(例如:添加一些软件包,删除一些软件包...)
但是默认情况下,Razor syntax支持#nullable,您可以在@{}
块内使用它。
示例:
@{
#nullable enable
string name1 = User.Identity.Name.ToLower();
#nullable disable
// compiler won't complain anything here...
string name2 = User.Identity.Name.ToLower();
}
测试:
我用来测试的csproj
文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>