Asp.net core 什么';@using和@namespace指令之间的区别是什么?

Asp.net core 什么';@using和@namespace指令之间的区别是什么?,asp.net-core,razor-pages,Asp.net Core,Razor Pages,我是asp.net razor页面的新手,如果我的问题听起来很愚蠢,很抱歉 在我看来,@using和@namespace都做了同样的事情,允许您不使用名称空间限定的全名?所以@using和@namespace是可以互换的?不,它们做的事情不同 发件人: @namespace指令指定页面(及其模型)要使用的根命名空间。按照惯例,它由一个点分隔的路径组成,路径指向Razor页面位置,应用程序的名称为“根”。在ViewImports文件中使用@namespace声明可以避免您在单个页面的@model指

我是asp.net razor页面的新手,如果我的问题听起来很愚蠢,很抱歉


在我看来,
@using
@namespace
都做了同样的事情,允许您不使用名称空间限定的全名?所以
@using
@namespace
是可以互换的?

不,它们做的事情不同

发件人:

@namespace
指令指定页面(及其模型)要使用的根命名空间。按照惯例,它由一个点分隔的路径组成,路径指向Razor页面位置,应用程序的名称为“根”。在ViewImports文件中使用
@namespace
声明可以避免您在单个页面的
@model
指令中完全限定模型名称

每个ViewImports文件只能有一个
@namespace
指令。将多个
@namespace
指令添加到同一文件将导致生成错误

您可以使用指令进一步添加
,以将其他名称空间纳入范围:

@using MyApplication
@using MyApplication.Models
@using MyApplication.Services
@namespace MyApplication.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@Mikr感谢您的回答,但仍然感到困惑。在上面的例子中,我也可以使用MyApplication.Pages使用
,不是吗?是的,你可以,但你不需要。页面已经在该名称空间中,因此您不需要使用
@using
,以避免在例如
@model
指令中使用完全限定的名称空间。但是你可以,如果你想的话。如果
@namespace MyApplication.Pages
可以被
@使用MyApplication.Pages
替换,那么这两件事不一样吗?不,它们做的事情不一样。
@namespace
指令为内容页设置名称空间。使用
指令的
@不能做到这一点。它提供了一种快捷方式来引用其他名称空间中的类等。很抱歉再次打扰您。只是想确认一下,你是说Razor页面可以有自己的名称空间吗?我一直认为只有类文件(.cs)可以有名称空间,所以
.cshtml
也可以有名称空间?但是razor页面的代码隐藏文件不是已经有了一个名称空间吗?例如,
index.cshtml.cs
可以定义自己的空间,而且它看起来像是
@namespace
被用来设置
index.cshtml
的名称空间,以便它与代码隐藏文件
index.cshtml.cs
的名称空间相匹配?