静态文件
建立静态文件
与 Pages 平级,建一个文件夹,叫 wwwroot,注意,这个名字不能随便改。
再在下面建一 img 文件夹(或其他名称),再在里面放一张图片。
引用静态文件
Index.cshtml 中增加一句:
<img src="~/img/logo.png" alt="itpow" />
支持 ~/ 写法,你不用这个写法也可以。
启用静态文件
在 Program.cs 中增加 app.UseStaticFiles();,此时我们的 Program.cs 变成了:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); // 这句是新增的。 var app = builder.Build(); //app.MapGet("/", () => "Hello World!"); app.UseStaticFiles(); // 这句是新增的。 app.MapRazorPages(); // 这句是新增的。 app.Run();
就可以看到图片了。
布局页
建立布局页
可以暂时将“布局页”理解为“母版”。
在 Pages 下,建一个文件夹,叫 Shared,注意,这个名字不能随便改。
然后再在下面建一个 _Layout.cshtml,里面的代码如下(注意:没有 @page 标志)。
<!DOCTYPE html> <html> <head></head> <body> <div>头</div> @RenderBody() <div>尾</div> </body> </html>
注意:
没有 @page 标识。
必有 @RenderBody()。
应用布局页
在 Index.cshtml(称为内容页)中应用该 Layout,代码如下:
@page @model WebApplication1.Pages.IndexModel @{ Layout = "_Layout"; } <img src="~/img/logo.png" alt="itpow" />
这个 _Layout 也就是前面的文件标识符名称,这是默认的,咱们也可以用我们自己的名字。
说到这里,前面提到好多,都说名称不能随便改,但是不能随便改不代表不能改,比如这里,我就不喜欢把布局文件放 Shared,我就要放其他文件夹,比如:放在 Pages/master/Root.cshtml,也是可以的,只是引用布局页要使用全路径了:
@{ Layout = "~/Pages/master/Root.cshtml"; }
指定默认布局页
你可能会说,我看别人的代码,也没有每个页面都指定布局页啊。这是怎么做到的?
Pages 下新建一文件:_ViewStart.cshtml,注意,这个名字不能随便改。内容如下:
@{ Layout = "_Layout"; }
“操纵”布局页
布局页如下:
<!DOCTYPE html> <html> <head> <title>@ViewData["Title"]</title> </head> <body> <div>头</div> @RenderBody() <div>尾</div> </body> </html>
页面如下:
@page @model WebApplication1.Pages.IndexModel @{ ViewData["Title"] = "itpow"; } <img src="~/img/logo.png" alt="itpow" />
Ctrl + F5,可以看到,页面标题变了。顺便说一下,大家应该会发现,ASP.NET Core 运行时,不像 ASP.NET 打开新浏览器窗口,而是自动刷新原浏览器窗口。
至此,我们的项目结构如下: