局部视图是否总是需要从顶层视图传递的模型?
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 的强类型,您不需要显式传递它)
这里是 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
@model Order
<h2>@Model.OrderId</h2>
@Html.Partial("Customer",Model.Customer)
假设您的客户视图被强类型化为 Customer
类型
@model Customer
<h2>@Model.Name</h2>
您可以从任何地方调用 Customer 局部视图,只要您有要传递给它的 Customer 对象。 (如果您的父视图是针对 Customer class 的强类型,您不需要显式传递它)