浅谈ASP.NET Core 2.0 部分视图(译)
2017-11-08 09:18
681 查看
问题
如何在ASP.NET Core 2.0中使用部分视图来重用页面的公共部分?
答案
新建一个空项目,在Startup中添加MVC服务和中间件:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
添加两个模型:
public class EmployeeViewModel { public int Id { get; set; } public string Firstname { get; set; } public string Surname { get; set; } public AddressViewModel Address { get; set; } } public class AddressViewModel { public string Line1 { get; set; } public string Line2 { get; set; } public string Line3 { get; set; } }
添加控制器,返回ViewResult并传入模型实例:
public class HomeController : Controller { public IActionResult Index() { var model = new EmployeeViewModel { Id = 1, Firstname = "James", Surname = "Bond", Address = new AddressViewModel { Line1 = "Secret Location", Line2 = "London", Line3 = "UK" } }; return View(model); } }
添加视图页面Index.cshtml:
@using PartialView.Models; @model EmployeeViewModel <div style="border: 1px solid black; margin: 5px"> <h2>Employee Details (parent view)</h2> <p>Firstname: @Model.Firstname</p> <p>Surname: @Model.Surname</p> @Html.Partial("_Address.cshtml", Model.Address) </div>
添加部分视图_Address.cshtml:
@using PartialView.Models @model AddressViewModel <div style="border: 1px dashed red; margin: 5px"> <h3>Address Details (partial view)</h3> <p>Lin1: @Model.Line1</p> <p>Line2: @Model.Line2</p> <p>Line3: @Model.Line3</p> </div>
现在,解决方案中的目录结构:
运行,此时页面显示:
讨论
部分视图是一种渲染到其他视图内部的特殊视图。对于重用视图的部分结构或者将一个大视图分隔为一些小组件,这将非常有用。
部分视图可以像正常视图一样被创建,并且可以通过控制器方法来返回ViewResult。关键的区别在于部分视图渲染之前不运行_ViewStart.cshtml,并且它通常会被渲染到其他视图的内部。
在视图内部,部分视图通过@Html.Partial()方法来渲染,并且传入部分视图的名称和一个可选的模型实例。部分视图名称可以是绝对或者相对路径,视图引擎会在当前目录和Shared目录中查找相应的部分视图。
部分视图能获取父视图ViewData数据的一个拷贝。你还可以向其中传入模型,这通常是父视图模型的一部分。
注:ASP.NET Core还提供了另外一种更加灵活的解决方案来重用或者分隔视图,这种解决方案不仅可以运行代码,而且无需依赖父视图。它就是视图组件,下一节我们就会介绍。
原文:https://tahirnaushad.com/2017/08/24/asp-net-core-2-0-mvc-partial-views/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- [译]ASP.NET Core 2.0 部分视图
- 基础教程:视图中的ASP.NET Core 2.0 MVC依赖注入
- 浅谈ASP.NET Core 2.0 带初始参数的中间件(译)
- 详解ASP.NET Core 2.0 视图引擎(译)
- asp.net core2.0中网站发布的时候,怎么样才配置才可以使视图文件不被打包进去?
- [译]ASP.NET Core 2.0 视图引擎
- [译]ASP.NET Core 2.0 视图组件
- 浅谈ASP.NET Core 2.0 布局页面(译)
- 浅谈ASP.NET Core 2.0 中间件(译)
- [亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问
- 一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移
- ASP.NET Core 2.0 新功能汇总
- 使用angular4和asp.net core 2 web api做个练习项目(二), 这部分都是angular
- Asp.Net Core 2.0 之旅---AutoFac IOC容器的使用教程
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)
- ASP.NET Core 2.0 使用支付宝PC网站支付实现代码(转)
- Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- Asp.net 2.0 自定义控件开发专题[详细探讨页面状态(视图状态和控件状态)机制及其使用场景](示例代码下载)
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API