Asp.net core 什么';@using和@namespace指令之间的区别是什么?
我是asp.net razor页面的新手,如果我的问题听起来很愚蠢,很抱歉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指
在我看来,
@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
的名称空间相匹配?