c# - 局部 View 是否总是需要从顶层 View 传递的模型?

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

这是一个描述 MVC 部分 View 的 url:

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

基于此 url,分部 View 似乎绑定(bind)到从分部 View 的顶级/父 View 传递给它的模型。这是实现部分 View 的标准和预期方式吗?

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

最佳答案

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

@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 类的分部 View
@model Order
<h2>@Model.OrderId</h2>
@Html.Partial("Customer",Model.Customer)

假设您的 Customer View 是 Customer 类型的强类型

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

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

关于c# - 局部 View 是否总是需要从顶层 View 传递的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41402631/

相关文章:

javascript - xmlHttp.responseText 为空

asp.net - 多个 Html.dropdownlistfor 具有相同的选择列表,设置选定值

asp.net-mvc - Azure 网站 - 高延迟

c# - 类层次结构设计——接口(interface)+基类与抽象类

C# WriteFile(),无法写入 USB HID 设备

c# - 找不到资源

c# - 在 C# 中使用 'ref' 关键字

c# - ASP.NET Core:Docker恢复/构建未能包含项目中的第三方程序集

c# - 单表设计 - DynamoDB - 将两个表合并为一个?

asp.net-mvc - 如何使用 WebSecurity + SimpleMembership 手动设置 "log a user in"?