gpt4 book ai didi

asp.net-mvc - 将额外数据传递给 EditorTemplate

转载 作者:行者123 更新时间:2023-12-01 16:30:35 25 4
gpt4 key购买 nike

假设我有一个 LineItem(来自过度使用的购物车示例),并且我想使用 EditorTemplate 来呈现它。

我完全可以从父 View (部分或其他)使用 @Html.EditorFor(m => m.LineItems) 渲染它,但令人困惑的是传递一些额外数据的最佳方法(比如 SelectList其中数据来自数据库)到模板。

显然,我不应该通过添加这些无关的项目来污染 LineItem 模型(但从 View 的角度来看,这是必需的。)

在诉诸 ViewBag/ViewData 技巧之前,我试图看看是否有一种强类型的方法可以做到这一点。

我尝试创建一个“LineItem”特定 View 模型来传递数据,但它破坏了 MVC 生成的名称,并向集合添加了一个额外的层(当我将 View 模型的 IEnumerable<> 传递给EditorFor() 调用,而不是实际 LineItem 的 IEnumerable<>)

此外,这是对 EditorTemplate 的错误使用吗?对于 EditorTemplate 来说,需要下拉菜单的 LineItem 是否包含来自数据库表的选项太多?

请引导我走向 MVC 涅槃。在等待答案的同时,我会尝试其他想法!

澄清一下:我考虑使用 EditorTemplate 的原因是因为它为我提供了自动集合处理功能。否则整个[id]业务就会变得太粘了。

最佳答案

我最近遇到了同样的问题,发现this解决方案。

总而言之,您应该创建包含原始集合和所需支持数据的自定义 View 模型。然后,在调用自定义模板的 View 中,您可以使用 HtmlHelper 扩展方法重载将支持数据传递到 ViewData 字典。然后,您可以从您的自定义模板中检索并在 ViewData 中使用它们。

我认为这是一个很好的解决方法,基本上这就是 View 模型的目的,至少它比扩展或派生原始类只是为了为 View 提供额外的数据要好得多。

请告诉我它是否适合您的场景或者您是否找到任何其他解决方案。

关于asp.net-mvc - 将额外数据传递给 EditorTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032449/

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