Asp.net core 如何在aspnetcore razor视图页面(.cshtml)中启用#nullable
可能是重复的,但我找不到这方面的任何东西 我有一个asp.net核心MVC项目,它使用Razor的普通视图 我有一些具有可空引用类型的ViewModel对象,我正在使用C#8空安全功能来适当地标记这些对象(例如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
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将在那里提供额外的警告,如果可能的话,我希望它们出现在视图中