【发布时间】:2015-01-30 16:54:23
【问题描述】:
我想制作一个编辑器模板,让我从选项列表中选择一个项目,然后该项目以某种方式添加到列表中。换句话说,我将引用编辑器模板(其中 References 是项目列表):
@EditorFor(m => m.References)
输出将如下所示: (列表中每个项目的锚点)
<a href="whatever1">Reference1</a>
<a href="whatever2">Reference2</a>
<a href="whatever3">Reference3</a>
然后是一个带有选择功能的 jquery 自动完成输入字段,该功能添加到此列表(或等效项)
<input type='text' class='autocomplete-references' />
我怎样才能做到这一点?我似乎无法弄清楚如何开始这样做。
【问题讨论】:
-
我认为您并不真正了解 EditorTemplates 的工作原理或它们的用途。您不会使用 EditorTemplates 来“让您从选项列表中选择一个项目”。 Instad,您使用 EditorTemplate 来呈现列表中的项目。您通常会将 EditorTemplates 包装在代码中,以便您进行项目选择。例如,您可以将其放在 Partial 中。当您可以呈现特定类型的离散项时,EditorTemplates 效果最佳。即使它由子类型组成。例如,您可以使用 EditorTemplate 来呈现集合,但您应该将其包装在其他东西中。
-
为什么我不使用 EditorTemplate 来呈现我的一个模型成员的编辑功能?为什么我要制作一个 EditorTemplate 来呈现列表中的项目?那不是 DisplayTemplate 吗?
-
您误会了..您没有呈现编辑功能。您渲染要编辑的项目。如果此功能是一个简单的文本框或复选框,那么很好......但如果它是一个涉及的选择过程,那么你做错了地方。例如,您可以使用编辑器模板来呈现网格的各个行,但不能使用它来呈现网格本身。或分页或排序等功能。
-
我想你在这里想念我。我不想在我的视图中放置控制器操作,只是显示由模型支持的可编辑项目列表。在我看来,我想输入
@Html.EditorFor(m => m.MyList)。项目本身不是问题,我不希望个别项目是可编辑的,它们是预定义的。重要的是项目的选择。 -
我可能想念你,但那是因为你并没有很好地解释自己。 EditorFor 用于根据类型渲染项目。它不用于呈现选择机制。这是您想在编辑器之外提供的东西。因为 EditorTemplates 迭代集合,它会创建重复的逻辑,每个项目一个。您通常需要一个覆盖所有项目的单一选择机制。您可以将 EditorTemplate 视为类似于旧的 ASP.NET Repeater 控件。
标签: c# jquery asp.net asp.net-mvc-4 mvc-editor-templates