手机版

谈ASP.NET核心2.0布局页面(翻译)

时间:2021-09-03 来源:互联网 编辑:宝哥软件园 浏览:

本文介绍了ASP.NET核心2.0的布局页面,并与大家分享如下:

问题

如何在ASP.NET Core 2.0项目中共享可见元素、代码块和指令?

回答

要创建一个新的空项目,首先添加迎宾服务服务和用户视图模型:

公共接口Greet汀Service{ string Greet(字符串名字,字符串姓氏);}公共类greeting service : IGreetingService {公共字符串greeting(字符串名字,字符串姓氏){ return $ ' Hello { firstname } {姓氏} ';}}然后在Startup中添加MVC服务和GreetingService,配置MVC中间件:

public void ConfigureServices(IServiceCollection services){ services。AddScopedIGreetingService,GreetingService();服务。AddMvc();} public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env){ if (env。IsDevelopment()) { app。usedeveloper exception page();} app。UseMvc(routes={ routes。MapRoute(name: 'default ',template : ' { controller=Home }/{ action=Index }/{ id?}');});}添加控制器HomeController,修改Index方法并返回ViewResult:

公共类HomeController : Controller { public IActionResult Index(){ var model=new userview model { first name=' Tahir ',姓氏=' Naushad ' };返回视图(模型);}}添加布局页面(_Layout.cshtml):

!DOCTYPE html html head title@ViewBag.Title/title/headbody div h1I in Layout page/h1 @ render body()@ render section(' footer ',Required 3360 false)@ if(IsSectionDefined(' links '){ @ render section(' links ',Required : false)} else {emno提供的社交媒体链接/em}/div/body/htmladd视图,并注意命名约定(view/Home/index . cshtml):

@ model UserViewModel @ { ViewBag。Title='ASP。NET Core ';}h2I在View页面/h2p@Greeter。问候(@模特。名字,@ model .姓氏)/p @ sectionfooter {h3i在页脚部分/H3 } @ * @ section links { a href=' http://www.cnblogs.com/sanshi/'rel='外部no follow ' target=' _ blank ' blog/a } * @ add import

@使用layout page . models @ inject igreeting service greeter添加一个起始页(_ViewStart.cshtml):

@ { Layout=' _ Layout}完成后的目录结构如下:

运行时,页面显示:

讨论

ASP。NET core提供了一种在不同视图之间重用可见元素和公共代码的方法:

1.布局页面

2.起始页

3.导入页面

布局页面(_Layout.cshtml)

布局页面用于在不同页面之间共享公共的可见元素,从而为整个应用程序提供一致的外观和体验。

布局页面被添加到视图/共享目录中,并被命名为_Layout.cshtml(约定规则)。您可以在一个应用程序中放置多个布局页面。

该视图有一个布局属性来设置需要使用的布局。ASP.NET核心将首先在与视图相关的文件夹中寻找布局,如果没有找到,它将在共享目录中寻找布局。布局页面调用@RenderBody方法来呈现视图的内容。

如果删除_Layout.cshtml,我们可以从异常信息中看到查找路径的顺序:

布局页面还可以使用@RenderSection来决定要替换视图中的哪个段落。这些段落可能是必要的,也可能是可选的。视图使用@section来定义这些段落的内容。布局页面可以使用IsSectionDefined判断视图中是否定义了段落,并根据判断结果进行相应处理:

@ if(issued defined(' links '){ @ render section(' links ',required d : false)} else { emno提供的社交媒体链接/em}导入页面(_ViewImports.cshtml)

正如我们在上一篇文章中所讨论的,视图可以使用指令来做很多事情,比如导入名称空间(@using)、注入依赖项(@inject)和声明模型类型(@model)。MVC还提供了一个导入页面来声明一个或多个视图的通用指令。

导入页面通常被添加到视图目录中,并被命名为.它也可以添加到其他目录(如视图目录),在这种情况下,它将应用于该目录下的视图(包括子目录)。

如果有多个导入页面,则使用最接近视图的指令(如@model、@inject),在另一种情况下,所有指令合并在一起(如@using、@addTagHelper)。

起始页(_ViewStart.cshtml)

MVC提供了一种在所有视图之前运行代码的机制,这就是起始页。除了布局页和一些视图之外,起始页在每个视图之前运行。

通常,起始页被添加到视图目录中,并被命名为.如果有多个起始页,它们将按层次顺序执行,从根目录到子目录。

起始页通常用于设置目录中所有视图的布局页面。

源代码下载

原文:https://tahirnaushad.com/2017/08/23/ASP-NET-core-2-0-MVC-layout-page/

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:谈ASP.NET核心2.0布局页面(翻译)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。