编辑模板将现有对象添加到列表中

时间:2015-01-30 16:54:23

标签: c# jquery asp.net asp.net-mvc-4 mvc-editor-templates

我想制作一个编辑模板,让我从选项列表中选择一个项目,然后该项目以某种方式添加到列表中。换句话说,我将引用编辑器模板(参考文献是项目列表):

@EditorFor(m => m.References)

输出结果如下: (列表中每个项目的锚点)

<a href="whatever1">Reference1</a>
<a href="whatever2">Reference2</a>
<a href="whatever3">Reference3</a>

然后是一个jquery自动完成输入字段,其中包含一个select函数,该函数会添加到此列表中(或等效的东西)

<input type='text' class='autocomplete-references' />

我怎样才能做到这一点?我似乎无法弄清楚如何开始这样做。

1 个答案:

答案 0 :(得分:0)

Html.EditorFor使用了所谓的&#34;编辑模板&#34;。 MVC中内置了一些默认值来处理一些基本场景,但您可以通过在Views\Shared\EditorTemplates中创建视图来添加自己的视图,以类型(DateTime.cshtml,Boolean.cshtml,String)命名。 cshtml等),DataType enum(EmailAddress.cshtml,ImageUrl.cshtml等)的成员之一,或任何你想要的(带有警告)。

&#34;你想要的任何东西&#34;部分要求您使用UIHint装饰您的属性,在那里您将告诉它使用哪个模板,或明确指定模板。例如,如果您向属性添加了[UIHint("Foo")],则Html.EditorFor会查找编辑器模板Foo.cshtml。或者,您可以将模板名称传递给Html.EditorFor

@Html.EditorFor(m => m.SomeProperty, "Foo")

这一部分很重要的原因是因为你实际上不能拥有IEnumerable<Reference>之类的编辑器模板。要使用类似References属性的自定义编辑器模板,您必须执行以下操作:

@Html.EditorFor(m => m.References, "MyReferencesEditorTemplate")

或者,如上所述在属性上使用UIHint