-
[置顶]软件接口设计怎么做?前后端分离软件接口设计思路
本文关于软件接口设计怎么做?前后端分离软件接口设计思路。好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才。为什么在接口制定标准中说:一流的企业做标准,二流的企业...
-
[置顶]接口管理如何做?接口实现版本管理的意义和最佳方法
本文关于接口管理如何做?接口实现版本管理的意义和最佳方法。API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义。下面会从WEB API 版本管理的角度提供几种常...
-
[置顶]实现API管理系统的关键
下面将通过几个关键词的形式说明API管理的重要性和未来的实现方式。1.生命周期管理在整个API生命周期中更深入地集成所有工具将进一步提高生命周期循环的速度,而且更重要的是提供满足消费者需求的API。这...
-
C# 通过条件编译来控制不同版本(c1驾照能开什么车)
最近公司开发的项目,分开的版本太多,但是又不是联网版本,也就没有登录,不能通过用户登录来控制相关功能。比如A局有个改动要求,B局有个改动要求,但是,又是同时修改的一个M文件,原来的做法是,把M文件复制...
-
C# 数据操作系列 - 5. EF Core 入门(count)
0.前言上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类。这一章将介绍一个在C#世界里大名鼎鼎的ORM框架——Entity Framework的Core版。Entity Framewor...
-
C#的实现FTP传送文件(count)
简介:接上文实现对FTP的传送文件,此文和上文可以说是如出一辙,不过此文是通过cmd进行建立连接的,建立连接后也是通过以下几个步骤实现操作。建立文件的层级结构如上文,这里就不啰嗦了。C#实现FTP上传...
-
C# 数据操作系列 - 4. 自己实现一个ORM(cctv5)
0. 前言在之前的几篇内容中,我们了解了如何通过ADO.NET 访问数据库,如何修改、新增数据。如何通过DataSet和DataAdapter获取数据,我们将在这一篇试试自己实现一个简单的ORM框架或...
-
C#实现FTP上传资料(乘风破浪的姐姐第三季)
1.通过用FTP进行上传文件,首先要实现建立FTP连接,一般建立FTP连接,需要知道FTP配置有关的信息。一般要在Bean中建立一个ServiceFileInfo.cs文件进行记录,一般需要FTP地址...
-
C# 9.0 新特性预览 - 空参数校验
前言随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它们。目录[C# 9.0 新特性预览 - 类型...
-
C# Log4Net学习笔记:记录日志到数据库(cp是什么意思?)
一、数据准备在SQL Server中创建记录日志的数据表LogDetail:在此表中,日志时间、日志级别、线程ID、日志名称都是可以通过配置文件从Log4Net库中取值的,需要重点处理的是日志内容字段...
-
C# 数据操作系列 - 3. ADO.NET 离线查询(cctv5体育节目表)
0. 前言在上一篇中,我故意留下了查询的示范没讲。虽然说可以通过以下代码获取一个DataReader:IDataReader reader = command.ExecuteReader();然后通过...
-
@RenderSection("Scripts", required: false)
这是默认的布局页内容,看着挺多的,但是除了一些html代码,里面还有一些关键的地方需要注意。
1.1 RenderSection
RenderSection 分部渲染,在页面中创建一个标记,表示这个页面块将在子视图(或者是路由的实际渲染视图)中添加内容。
来,我们看一下微软官方给的注释:
In layout pages, renders the content of the section named name.
意思就是在布局页中,渲染名称为name的分部内容。
新创建一个分布页,名称为_Layout1:
@RenderSection("SectionDemo")
这个布局页里什么都没有,只有一个RenderSection。现在我们新建一个控制器:
using Microsoft.AspNetCore.Mvc;
namespace MvcWeb.Controllers
{
public class RenderTestController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
创建对应的视图:
Views / RenderTest/Index.cshtml
先设置布局页为_Layout1:
@{
Layout = "_Layout1";
}
先试试启动应用,访问:
http://localhost:5006/RenderTest/Index
正常情况下,你应该能看到这个页面:
仔细看一下信息,意思是在 RenderTest/Index.cshtml 视图中没有找到 SectionDemo 的分部内容。
那么,如何在视图中设置分部内容呢?
@{
Layout = "_Layout1";
}
@section SectionDemo{
}
使用 @section
后面跟一对大括号,在大括号中间的内容就是这个section(分部)的内容。 重启应用,然后刷新页面,你能看到这样的页面:
如果不做特殊要求的话,定义在布局页中的分部块,视图必须实现。当然,RenderSection还有一个参数,可以用来设置分部不是必须的:
public HtmlString RenderSection(string name, bool required);
1.2 RenderBody
先看下微软给的官方注释:
In a Razor layout page, renders the portion of a content page that is not within a named section.
简单讲,如果在布局页中设置了@RenderBody,那么在使用了这个布局页的视图里所有没被分部块包裹的代码都会渲染到布局页中声明了@RenderBody的地方。
修改_Layout1.cshtml:
@RenderBody()
修改RenderTest/Index.cshtml:
@{
Layout = "_Layout1";
}
RenderBody测试
重启应用,刷新刚刚访问的页面:
可以看出,RenderBody渲染的位置。
2. 静态资源引入
通常情况下,静态资源的引入与HTML引用js和css等资源是一致的,但是对于我们在编写系统时自己创建的脚本和样式表,asp.net core提供了不同的处理方式。那就是服务器端压缩功能。
asp.net core 3.0 的mvc 默认项目是不启动这个功能的,需要我们额外的开启支持。
2.1 开启支持
先引入 BuildBundleMinifier
cd MvcWeb # 切换目录到MvcWeb项目下
dotnet add package BuildBundleMinifier
创建 bundleconfig.json
[
{
"outputFileName": "wwwroot/css/site.min.css",
"inputFiles": [
"wwwroot/css/site.css"
]
},
{
"outputFileName": "wwwroot/js/site.min.js",
"inputFiles": [
"wwwroot/js/site.js"
],
"minify": {
"enabled": true,
"renameLocals": true
},
"sourceMap" alt="【asp.net core 系列】5 布局页和静态资源(aspnet过时了吗)" title="【asp.net core 系列】5 布局页和静态资源(aspnet过时了吗)" width="200" height="150">
【asp.net core 系列】5 布局页和静态资源(aspnet过时了吗)
0. 前言在之前的4篇的内容里,我们较为详细的介绍了路由以及控制器还有视图之间的关系。也就是说,系统如何从用户的HTTP请求解析到控制器里,然后在控制器里处理数据,并返回给视图,在视图中显示出来。这一...
-
C#将DataTable数据导出CSV文件(cctv5体育节目表)
C#将DataTable数据导出CSV文件通用方法!//导出按钮调用导出方法 protected void btnCSV_Click(object sender, EventArgs e) ...
