浅谈ASP.NET Core 2.0 部分视图(译)
问题 如何在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中App_Data等文件夹的作用
- 问题在ASP.NET 5(Core)中添加对类库项目的引用
- asp.net-mvc-3 – 模型验证/ ASP.NET MVC 3 – 条件必需属性
- asp.net-mvc – 为什么我的View不包括_Layout.cshtml?
- 我如何在ASP.Net Web窗体中模拟/伪造会话对象?
- asp.net-mvc – 什么是Razor中的ViewBag.Title?
- asp.net-mvc-2 – 抛出间歇性错误,“所需的防伪令牌未提供或
- [Hei.Captcha] Asp.Net Core 跨平台验证码实现
- .NET中的FileUpload控件的使用-Jquery(一)
- .net – 只有在配置中enableSessionState设置为true时才可以
- asp.net-mvc – ASP.Net MVC添加控制器错误
- Phonegap上的ASP.NET窗体身份验证问题(Android)
- asp.net – 如何忽略全局asax中图像的日志记录错
- asp.net-mvc – 查看模板代码标签 – asp.net mv
- ASP.NET MVC3角色和权限管理 – >具有运行时权限
- EXCEL文件导入时报_未在本地计算机上注册Microso
- asp.net-mvc-3 – ActionButton而不是ActionLink
- asp.net – 504服务器上的错误
- 单元测试 – MVC3中的单元测试控制器会话变量
- asp.net – FormsAuthentication.SetAuthCookie做