我该如何在aspnetcore剃刀视图页面(.cshtml)中#nullable enable

时间:2020-11-01 21:40:33

标签: asp.net-core razor razor-pages nullable-reference-types

可能重复,但是我一直找不到任何东西。

我有一个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时的运算符

1 个答案:

答案 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();
}

测试:

1

我用来测试的csproj文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>