gpt4 book ai didi

asp.net-mvc - 如何填充 mvc razor 局部 View

转载 作者:行者123 更新时间:2023-12-03 09:47:33 25 4
gpt4 key购买 nike

我需要创建一个显示订单标题信息的 View ,我需要添加一个显示行项目网格的 patial View 。局部 View 将从 View 模型中强类型化。我知道我应该使用 html helper @Html.Partial("Path/view")。到目前为止,我只使用 Controller 来打开 View ,在将其发送到 View 之前填充 View 模型。由于局部 View 是从 html 帮助程序中调用的,我想知道用模型数据填充局部 View 的最佳方法是什么。

最佳答案

选项 1:从父页面继承

默认情况下,通过调用 @Html.Partial("PartialViewName") 呈现的任何局部 View 将获取传递给父 View 的 View 模型。

所以如果你有:

查看模型

namespace MyNamesapce
{
public OrderInfoViewModel
{
public string OrderTitle { get; set; }
public IEnumerable<OrderItem> OrderItems { get; set; }
}
}

订单信息.cshtml
@model MyNamespace.OrderInfoViewModel

<h1>@Model.OrderTitle</h1>

@Html.Partial("OrderLineItems")

OrderLineItems 页面应该得到一个 MyNamespace.OrderViewModel传递给它......所以你的部分 View 应该是这样的:

订单行项目.cshtml
@model MyNamespace.OrderInfoViewModel

foreach (var orderItem in Model.OrderItems)
{
//Do stuff
}

选项 2:指定型号

您可以使用第二个参数来指定要传递的 View 模型。 IE。

订单信息.cshtml
@model MyNamespace.OrderInfoViewModel

<h1>@Model.OrderTitle</h1>

@Html.Partial("OrderLineItems", Model.OrderItems)

订单行项目.cshtml
@model IEnumerable<OrderItem>

foreach (var orderItem in Model)
{
//Do stuff
}

选项 3:使用部分操作

如果您需要在多个页面上重用分部 View ,最好使用分部 View 来消除使用相同信息填充不同 View 模型的必要性,因为页面将使用相同的分部。

例如。

查看模型
namespace MyNamesapce
{
public OrderInfoViewModel
{
public string OrderTitle { get; set; }
}
}

Controller
public class OrderController : Controller
{
public ActionResult OrderInfo(int orderId)
{
OrderInfoViewModel viewModel = GetViewModel(orderId);
return View(viewModel);
}

public PartialViewResult OrderLineItems(int orderId)
{
IEnumerable<OrderItem> orderItems = GetOrderItems(orderId);
return Partial(orderItems);
}
}

订单信息.cshtml
@model MyNamespace.OrderInfoViewModel

<h1>@Model.OrderTitle</h1>

@Html.Action("OrderLineItems")

订单行项目.cshtml
@model IEnumerable<OrderItem>

foreach (var orderItem in Model.OrderItems)
{
//Do stuff
}

关于asp.net-mvc - 如何填充 mvc razor 局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13769707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com