Partial:局部的;部分的;就叫部分视图吧,听着比较形象一点。
旧版MVC中是RenderPage("")
一、定义
部分视图是在一个视图中嵌套另外一个视图。在父视图中通过调用子视图并将子视图的HTML呈现给父视图。
二、使用情况
部分视图是将大的视图分解成较小视图组件的一种有效的方法。能使视图元素可以重复使用。通常布局元素在_Layout.cshtml
中指定。非布局的并且可以重复的内容可以封装成部分视图。
如果你有一个复杂的界面有不同的逻辑组成这个界面,可以将不同的逻辑抽象出来,作为部分视图,界面的不同部分都可以实现隔离。
并且整个页面也变得简单,这样一个复杂的页面就可以调用不同的部分视图来实现渲染。
三、声明部分视图
部分视图创建和别的视图创建没什么区别:您可以在View文件夹下面创建一个.cshtml文件。部分视图和常规视图没有什么区别
只是他们的渲染方式不同。
四、引用一个部分视图
在Asp .Net Core3.1中有两种方式引用部分视图,这两种方式都有异步方法和同步方法(这里只展示异步方法,将方法名Async去掉就是同步方法,并且两个方法参数是一样的),也都可以传参数到部分视图。
1、不传参数
第一种方式
1 @{ 2 ViewData["Title"] = "Home Page"; 3 await Html.RenderPartialAsync("Privacy"); 4 }
这个方法不返回结果,它将渲染结果直接输出到响应中。正因为它不返回响应,所以必须在 Razor 代码块中调用。
在旧版的MVC中是使用@RenderPage来渲染
第二种方式
1 @await Html.PartialAsync("Privacy")
这个方法返回结果,会将部分视图中内容渲染到你父视图的当前位置
2、传参数到部分视图
这里重载方法可以选择传Model或者是自定义参数,或者是都使用。
第一种方式
1 @{ 2 ViewData["Title"] = "Home Page"; 3 await Html.RenderPartialAsync("Privacy", new ViewDataDictionary(this.ViewData) { { "name", "abc" } }); 4 }
第二种方式
@await Html.PartialAsync("Privacy", new ViewDataDictionary(ViewData) { { "name", "abc" } })
在部分视图中使用父视图传递的参数
1 @* 在页面中使用 *@ 2 <p>@ViewData["name"]</p> 3 @* 在JS中使用 *@ 4 <script> 5 console.log('@ViewData["name"]'); 6 </script>