Asp.net core 如何在aspnetcore razor视图页面(.cshtml)中启用#nullable

Asp.net core 如何在aspnetcore razor视图页面(.cshtml)中启用#nullable,asp.net-core,razor,razor-pages,nullable-reference-types,Asp.net Core,Razor,Razor Pages,Nullable Reference Types,可能是重复的,但我找不到这方面的任何东西 我有一个asp.net核心MVC项目,它使用Razor的普通视图 我有一些具有可空引用类型的ViewModel对象,我正在使用C#8空安全功能来适当地标记这些对象(例如string?Name) 我的问题是,当我在cshtml文件中使用这些变量作为强类型模型时,不会应用null安全性,因为我没有为该文件启用它 如果它是.cs文件,我会将#nullable enable粘贴在顶部,但是对于razor页面我能做什么呢 更新以澄清:如果可能的话,我希望razo

可能是重复的,但我找不到这方面的任何东西

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

我有一些具有可空引用类型的ViewModel对象,我正在使用C#8空安全功能来适当地标记这些对象(例如
string?Name

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

如果它是
.cs
文件,我会将
#nullable enable
粘贴在顶部,但是对于razor页面我能做什么呢


更新以澄清:如果可能的话,我希望razor文件中所有@code块上都有空的安全警告。显示了如何为特定的块启用它,但我希望它用于类似这样的东西

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

具体地说,我希望在Name.ToUpper()上有一个警告,因为Name可以为null,并且我没有使用?操作员在呼叫ToUpper时,您的问题中没有足够的信息说明您需要执行的操作(例如:添加一些程序包,删除一些程序包)

但是默认情况下,支持,您可以在
@{}
块中使用它

例如:

@{
    #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>

netcoreapp3.1

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

但是默认情况下,支持,您可以在
@{}
块中使用它

例如:

@{
    #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>

netcoreapp3.1

为什么要将其显示在视图中?视图可以处理空值,如果你有空值,你会得到错误吗?我希望编译器在我不安全地使用一些可空变量时给我警告。例如,如果我在视图中执行此操作:
@User.Name.ToLower()
,如果Name为null,它将崩溃,就像我应该做的那样。
@User.Name?.ToLower()
或null首先检查它#nullable将在那里提供额外的警告,如果可能的话,我希望它们出现在视图中。为什么您希望它出现在视图中?视图可以处理空值,如果你有空值,你会得到错误吗?我希望编译器在我不安全地使用一些可空变量时给我警告。例如,如果我在视图中执行此操作:
@User.Name.ToLower()
,如果Name为null,它将崩溃,就像我应该做的那样。
@User.Name?.ToLower()
或null首先检查它#nullable将在那里提供额外的警告,如果可能的话,我希望它们出现在视图中