2

可能重复,但我一直无法找到任何关于此的内容。

我有一个 asp.net 核心 MVC 项目,它使用 Razor 使用普通视图。

我有一些具有可为空引用类型的 ViewModel 对象,并且我正在使用 C# 8 空安全特性来适当地标记它们(例如string? Name

我的问题是,当我在cshtml文件中使用这些变量作为强类型模型时,不会应用空安全性,因为我没有为文件启用它。

如果它是一个.cs文件,我会坚持#nullable enable在顶部,但我可以为剃须刀页面做什么?


更新以澄清:如果可能,我希望在整个剃须刀文件中的所有 @code 块上都出现空安全警告。Tân 的回答显示了如何为特定的块启用它,但我想要这样的东西

<span>@Model.Name.ToUpper()</span>

具体来说,我想在 Name.ToUpper() 上发出警告,因为 Name 可以为空并且我没有使用 ? 调用 ToUpper 时的运算符

4

1 回答 1

4

您的问题中没有足够的信息来说明您需要做什么(例如:添加一些包,删除一些包......)

但默认情况下,Razor 语法支持#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>
于 2020-11-02T06:05:10.520 回答