局部视图是否总是需要从顶层视图传递的模型?

does a partial view always need a model passed from the top-level view?

这里是 url 描述 MVC 中的部分视图:

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

基于此 url 看起来分部视图绑定到从分部视图的 top-level/parent 视图传递给它的模型。这是实现部分视图的标准和预期方式吗?

这似乎表明打算从几个不同的父视图中使用的部分视图应该具有某种类型的关联专用 class 可以用于 return 其数据到多个不同的视图模型建设者。这是对MVC分部视图架构的正确解读吗?

是的。默认情况下它使用父视图(view)模型。但是您始终可以显式地将另一个模型传递给它(只要传递的模型类型与视图强类型化的类型相同)。

@Html.Partial("MyPartialView",Model)

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

假设 MyPartialView 被强类型化为 MyClass

@model MyClass

例如,如果您的主视图是 Order class 的强类型,它有一个 Customer 属性 这样的

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

您可以通过传递 Model.Customer

从您的主视图调用强类型给客户 class 的部分视图
@model Order
<h2>@Model.OrderId</h2>
@Html.Partial("Customer",Model.Customer)

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

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

您可以从任何地方调用 Customer 局部视图,只要您有要传递给它的 Customer 对象。 (如果您的父视图是针对 Customer class 的强类型,您不需要显式传递它)