部分视图总是需要从顶级视图传递的模型吗?

时间:2016-12-30 20:59:09

标签: c# .net asp.net-mvc partial-views

这是一个描述MVC中部分视图的网址:

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial

基于此URL,部分视图看起来像是从部分视图的顶级/父视图传递给它的模型。这是实现部分视图的标准和预期方式吗?

这似乎表明,打算从几个不同的父视图中使用的局部视图应该具有某种类型的关联专用类,可用于将其数据返回到多个不同的viewmodel构建器。这是对MVC局部视图架构的正确解释吗?

1 个答案:

答案 0 :(得分:3)

是。默认情况下,它使用父视图(视图)模型。但是你总是可以明确地将另一个模型传递给它(只要模型传递的类型与强类型视图的类型相同)。

@Html.Partial("MyPartialView",Model)

 @{ var data = new MyClass { SomeProperty = "SomeValue"};
 @Html.Partial("MyPartialView",data )

假设MyPartialView强类型为MyClass

@model MyClass

例如,如果您的主视图强烈输入Order类,其类似Customer属性

public class Order
{
  public int OrderId { set;get;}
  public Customer Customer { set;get;}
}
public class Customer
{
  public string Name { set;get;}
} 

您可以通过传递Model.Customer

从主视图中调用强类型为Customer类的局部视图
@model Order
<h2>@Model.OrderId</h2>
@Html.Partial("Customer",Model.Customer)

假设您的客户视图是强类型为Customer类型

@model Customer
<h2>@Model.Name</h2>

只要您有一个Customer对象传递给客户对象,您就可以从任何地方调用客户部分视图。 (如果你的父视图是强类型的Customer类,你不需要显式传递它)