假设我有一个 LineItem(来自过度使用的购物车示例),我想使用 EditorTemplate 呈现它。
我完全可以使用父视图(部分或其他)中的 @Html.EditorFor(m => m.LineItems) 来渲染它,但令人困惑的是传递一些额外数据的最佳方法(比如具有数据的 SelectList来自数据库)到模板。
显然,我不应该通过添加这些无关的项目来污染 LineItem 模型(但是从视图的角度来看这是必需的。)
在诉诸 ViewBag/ViewData 技巧之前,我试图查看是否有一种强类型的方法来执行此操作。
我已经尝试创建一个“LineItem”特定的视图模型来传递数据,但它会破坏 MVC 生成的名称并向集合添加一个额外的层(因为我将视图模型的 IEnumerable<> 传递给 EditorFor( ) 调用,而不是实际 LineItem 的 IEnumerable<>)
另外,这是对 EditorTemplate 的错误使用吗?LineItem 是否需要一个下拉菜单,其中包含来自数据库表的选项对于 EditorTemplate 来说太多?
请引导我走向 MVC 必杀技。在等待答案的同时,我将尝试其他想法!
澄清一下:我考虑使用 EditorTemplate 的原因是因为它为我提供了自动收集处理。否则整个 [id] 业务变得太粘。