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

C# 局部视图是否总是需要从顶层视图传递模型?,c#,.net,asp.net-mvc,partial-views,C#,.net,Asp.net Mvc,Partial Views,下面是一个描述MVC中部分视图的url: 基于此url,部分视图似乎绑定到从部分视图的顶级/父视图传递给它的模型。这是实现局部视图的标准和预期方法吗 这似乎表明,打算从多个不同父视图使用的局部视图应该具有某种类型的关联专用类,可用于将其数据返回给多个不同的viewmodel构建器。这是MVC局部视图体系结构的正确解释吗?是。默认情况下,它使用父视图(视图)模型。但您始终可以显式地将另一个模型传递给它(只要传递的模型的类型与视图的强类型相同) 或 假设MyPartialView强类型为MyCla

下面是一个描述MVC中部分视图的url:

基于此url,部分视图似乎绑定到从部分视图的顶级/父视图传递给它的模型。这是实现局部视图的标准和预期方法吗


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

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

假设
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

@model Order
<h2>@Model.OrderId</h2>
@Html.Partial("Customer",Model.Customer)

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

谢谢shyju。因此,听起来模型不能独立地与局部视图关联。i、 e.-局部视图的模型必须始终从父视图传递,对吗?否!它可以有另一种类型。请参阅答案Thank shyju,这样听起来我可以在没有模型参数的情况下调用@Html.Partial(“CustomerDetails”),MVC会自动尝试默认绑定到父模型吗?在您上面提供的示例中,这将是一个客户模型?是的。如果使用仅采用视图名称的重载,则它采用父模型。
public class Order
{
  public int OrderId { set;get;}
  public Customer Customer { set;get;}
}
public class Customer
{
  public string Name { set;get;}
} 
@model Order
<h2>@Model.OrderId</h2>
@Html.Partial("Customer",Model.Customer)
@model Customer
<h2>@Model.Name</h2>