首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Razor _layout.cshtml在文件名中有一个前导下划线?

Razor _layout.cshtml 文件名中的前导下划线是一种约定俗成的命名方式,用于表示该文件是一个特殊的布局文件,而不是一个普通的视图文件。这种命名方式有助于开发者区分布局文件和普通视图文件。

基础概念

  • Razor:Razor 是 ASP.NET Core 的一种标记语法,用于创建动态 web 内容。
  • 布局文件:布局文件定义了应用程序的通用页面结构,可以被多个视图共享。

优势

  1. 清晰性:前导下划线使得布局文件在文件系统中更加显眼,便于开发者识别。
  2. 约定俗成:这种命名方式是 ASP.NET Core 社区广泛接受的标准,有助于保持代码的一致性和可维护性。

类型

  • 主布局文件:通常命名为 _Layout.cshtml,定义了整个应用程序的默认页面结构。
  • 部分视图:可以命名为 _PartialView.cshtml,用于在多个视图中重复使用的部分内容。

应用场景

  • 网站导航:在布局文件中定义网站的导航栏,确保所有页面都具有一致的导航结构。
  • 页脚:在布局文件中定义页脚内容,确保所有页面都包含相同的页脚信息。
  • 样式和脚本:在布局文件中引入全局样式表和脚本文件,确保这些资源在所有页面中都能被加载。

常见问题及解决方法

问题:为什么 _layout.cshtml 文件没有被正确加载?

  • 原因
    • 文件路径错误:确保 _layout.cshtml 文件位于正确的目录中,通常是 Views/Shared 目录。
    • 视图继承错误:确保在视图中正确继承了布局文件,例如使用 @{ Layout = "~/Views/Shared/_Layout.cshtml"; }
    • 配置错误:确保在 Startup.csProgram.cs 中正确配置了视图引擎。
  • 解决方法
    • 检查文件路径和名称是否正确。
    • 确保在视图中正确设置了布局文件路径。
    • 检查应用程序的配置文件,确保视图引擎配置正确。

示例代码

以下是一个简单的 _Layout.cshtml 文件示例:

代码语言:txt
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                    <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
                </ul>
            </div>
        </div>
    </div>

    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>© @DateTime.Now.Year - My ASP.NET Application</p>
        </footer>
    </div>

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

参考链接

通过以上信息,你应该对 _layout.cshtml 文件的前导下划线命名方式有了更深入的了解,并且知道如何解决常见的加载问题。

相关搜索:为什么在TextView中有下划线?为什么在libeay32中SHA512函数的符号没有前导下划线?为什么在一个源文件中有多个类?为什么在@OneToMany映射中有一个循环?为什么我得到一个错误,在XML文档中有一个错误?为什么在HBase中有太多的列族不是一个好主意?为什么我们在Go中的foo()中有一个孤立的test()?为什么在Python中有一个不适当的排序方法列表?为什么scala.util.Try在猫中有一个实例,而在scalaz中没有?为什么在我的网格视图ASP.NET中有一个<td>&nbsp;</td>为什么在swift4中有一个空的数组和错误?为什么我的应用程序在我的ButtonManager类中有一个NullPointerException崩溃?为什么在Rails中有时我需要一个包,而有时我不需要?我在visual Studio代码中有一个带有下划线的可视错误,我在任何地方都不能引用它为什么在尖括号中有两个参数,Emgu库中的一个类: Image<TColor,TDepth>为什么在PySpark中有两个读取CSV文件的选项?我应该使用哪一个?为什么在我的字体中有一个破折号令人敬畏的‘信封’图标(截图如下)为什么在保存转换后的邮件地址时,我的数据库中有一个null?为什么我会得到这个错误?似乎我在s1.grade_level中有一个错误,但我不知道为什么为什么在array_splice中有一个&before $ input(array&$ input,int $ offset [,int $ length = 0 [,mixed $ replacement]])
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 入门教程 6、ASP.NET Core MVC 视图布局入门

Razor视图引擎原生提供了Layout的概念,作为视图布局的基础,可以让我们视图中引用另外一个视图作为该视图的母版。...1、创建布局页(Layout)作为母版页 项目根目录Views文件夹中创建子目录Shared,并在Shared目录中创建母版页 _Layout.cshtml 通常公共的Razor视图文件名都以_开头...Razor视图引擎提供了Section的概念,我们可以视图中定义Section,然后再母版视图中通过RenderSection方式加载视图定义的Section。...、下划线、数字 Section加载 母版页中可以通过@RenderSection()方法加载子页面中定义的Section RenderSection只有母版页(Layout)中使用才有效 强制加载...@RenderSection("test") 子页面中有定义就加载 @RenderSection("test", false) 子页面中有定义就加载,没有就显示默认内容 @if(IsSectionDefined

2.8K40
  • Day 03:Blazor Server和Blazor WebAssembly的差异

    清空文件下载记录 切换Counter和Fetch data菜单 接着一个解决方案建立一个Blazor WebAssembly项目,可以看到这里有 渐进式 Web 应用程序 选项,如果选了,这个网站就可以电脑下载下来...其他razor文件名的文件就是一个个组件(Component)。...3号框则是两个项目都相同,MainLayout.razor, NavMenu.razor分别为网页布局及菜单,一个网站如果每个网页都用相同Sidebar、Menu,每更新一次(如更改公司Logo、添加联系方式...,也可以不同文件夹建立独立_Imports.razor文件,不同文件夹的_Imports.razor只会作用于文件夹内的Component。...而Blazor Server中有个没说到的Data文件夹,里面又是什么呢?

    3.1K30

    razorpages_rabeprazole

    Asp.Net Core Web应用程序,接下来会弹出一个对话框,让我们选择模板类型: 通过上节我们创建了Razor Page项目,直接通过dotnet run或者vs中F5运行。...上文中我们说到,Razor Page的项目中,我们的关注点都在Pages目录下,VS Explore中,我们看到Index.cshtml的左边有一个三角箭头,点击就会看到Index.cshtml.cs...; } 然后我们修改下Index.csthml: @page @model IndexModel //这个指令使得cshtml.cs文件中的IndexModel类,在这个Razor Page中有效...@{ ViewData["Title"] = "Home page"; //你可以Razor Page页面中设置ViewData的键值,_Layout.cshtml模版页面中使用你设置的...现在来说PageModel就是一个Model,Action,HttpMethod的合体,对于Controller使用文件自己的路径+文件名的方式,比如原先我们的HomeController,默认情况下我们可以通过

    59320

    ASP.NET MVC 5 - 视图

    您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所引入的Razor视图引擎(Razor view engine)。...Razor视图模板文件使用.cshtml文件扩展名,并提供了一个优雅的方式来使用C#语言创建所要输出的HTML。...用Razor编写一个视图模板文件时,将所需的字符和键盘敲击数量降到了最低,并实现了快速,流畅的编码工作流程。 当前控制器类中的Index方法返回了一个硬编码的字符串。...如果你一个文件夹中有一个自定义布局,你也可以选择它。稍后本教程中,我们会谈论的布局文件。...这段文字是每个页面的公用文字,即使这段文字出现在每个页面上,但是实际上它仅保存在工程里的一个地方。解决方案资源管理器里找到/Views/Shared文件夹,打开_Layout.cshtml文件。

    3.2K80

    一步一步创建ASP.NET MVC5程序(十)

    ASP.NET MVC 5 WEB应用程序开发,我们通常使用的视图引擎为:Razor,这个视图引擎的母版页面默认位于网站目录[/Views/Shared/_Layout.cshtml]中,具体的视图页面中...提取母版页 在上文中已经为大家阐述了母版页的作用,开始之前提取共用布局区域之前,我们先看一下当前页面的大致布局: ?...但是请注意,一个母版页中只能有一个@RenderBody()标记。...应用部分视图 首先,文件夹【~/Views/Shared/】下新建一个文件,命名为:_NavBar.cshtml。...有没有觉得Razor视图DIAO爆了。 写到这里,Rector还真想吐槽,吖的,为什么传统的Webform母版页功能怎么做得那么难用呢!!! “好在,我们还有Razor。”软软站出来说。

    1.9K110

    ASP.NET Core教程【一】关于Razor Page的知识

    中依赖注入数据库链接上下文对象 Startup.cs文件中,有一个ConfigureServices方法,你可以通过依赖注入的方式,加载数据库连接上下文,比如这样: public void ConfigureServices...Razor页面的PageModel类 好,我们现在看看怎么通过数据库上下文把数据从数据库中拿出来 Pages目录下,创建一个Razor页面 相应的cshtml.cs文件中,撰写如下代码: using...引擎可以把上面这些HTML代码转成C#代码或者转成Razor过度代码; 当一个 @ 符号后面跟的是Razor保留关键字的话,他会被转义成Razor过度代码,否则会被转义成C#代码; 这是在编译期完成的工作...,所以不会影响运行期的执行效率; 关于page指令 @page指令使得这个页面变成了一个ASP.NET MVC的Action 这个指令必须是Razor Page的第一个指令 关于违法访问的处理 来看看下面这行代码..."Index"; } 你可以Razor Page页面中设置ViewData的键值,_Layout.cshtml模版页面中使用你设置的ViewData 关于注释 Razor Page中,用下面的方式写注释

    2.6K80

    【ASP.NET Core 基础知识】--MVC框架--Views和Razor语法

    每个Controller都有一个对应的文件夹,其中包含该Controller的所有视图。 视图布局 Views支持布局,可以使用主布局文件(_Layout.cshtml)定义整个应用程序的共同结构。...下面是一个示例: 假设有一个名为HomeController的Controller,其中有一个名为Index的Action方法。...这个主布局文件项目中被称为 _Layout.cshtml,位于Views/Shared文件夹下。以下是一个简单的 _Layout.cshtml 的示例: 注意事项 部分视图的文件名通常以下划线 _ 开头,这是一种常见的约定,用于表示这是一个局部组件而非完整的视图。...下面是一些Razor视图中使用JavaScript库的例子: 引入本地的JavaScript库文件 如果你的项目中有本地存储的JavaScript库文件,你可以通过以下方式Razor视图中引入它们

    39720

    ASP.NET Core 2.0 : 三. 项目结构

    SDK同样是一个大而全的集和, 部署的时候, SDK中的引用依然不会出现在部署包中, 如下图, 是不是很精简 ?...Header、Footer和Navigation基本上是不变的, 打开_Layout.cshtml, 我们可以看到一个@RenderBody()标识, 它其实就是来定义Content部分的,  继承此模板的页面只需要提供这部分内容即可...引用此模板, 只需页首如下配置即可. @{ Layout = "~/Views/Shared/_Layout.cshtml"; } 每个页都配置比较麻烦? ...View中引用Model等的时候, 为了避免写using .... , 我们可以在这个config中添加这些引用 <host factoryType...上文的代码可以看到, inputFiles 是一个数组, 而outputFileName 是一个单独的文件名,    以css为例, inputFiles里面已经有一个文件 wwwroot/css/site.css

    1.8K50

    Python 中5种下划线的含义都是什么?

    一 单前导下划线:_var 1 说明 当涉及到变量和方法名称时,单个下划线前缀有一个约定俗成的含义。 下划线前缀的含义是:以单个下划线开头的变量或方法仅供内部使用。 该约定在PEP8中有定义。...假设你一个名为my_module的模块中有以下代码: 现在,如果使用通配符从模块中导入所有名称,则Python不会导入带有前导下划线的名称(除非模块定义了覆盖此行为的__all__列表): 顺便说一下...self.foo变量属性列表中显示为foo。 self._bar的行为方式相同 - 它以_bar的形式显示类上。 就像我之前说过的,在这种情况下,前导下划线仅仅是一个约定。....__ baz的值时,为什么我们会得到AttributeError? 名称修饰被再次触发了!...它适用于类上下文中使用的两个下划线字符开头的任何名称。 四 双前导和双末尾下划线:__var__ 1 说明 如果一个名字同时以双下划线开始和结束,则不会应用名称修饰。

    1.3K40

    如何在 ASP.NET MVC 中集成 AngularJS(1)

    使用 RequireJS 来实现 MVC 捆绑的动态加载 开发 AngularJS 单页的应用程序时,其中有一件事情是不确定的。...示例应用程序,会出现两个 Razor 视图被用到,Index.cshtml 和 _Layout.cshtml 母版页布局,这两个 Razor 视图将用于引导和配置应用程序。...但问题是,甚至 AngularJS 被启动之前,主页的 Razor 视图索引就已经被执行和注入了 _Layout.cshtml 主页面中。...我有两个选择,要么直接嵌入 NG-View 代码到母版页 _Layout.cshtml 或使用 Razor 视图将它注入到母版页。我决定简单地从索引 Razor 视图中注入标签。...本质上,索引 Razor 视图应用程序的引导过程中被简单的使用,并且应用程序启动后不会被引用。

    7.6K60
    领券