简单地说:我想,让用户选择在JS的一些标签,并提交给我的控制器。 这里是我的建议:
- 与命名约定如创建为每个标签插入一个隐藏的输入:
Tag123
(123 =这个标签的唯一标识符),并通过迭代FormCollection
在我的操作方法,以找出哪些标签已被选定。 缺点也很明显:使用FormCollection
而不是ViewModel
和迭代通过FormCollection
得到我想要的数据似乎对我不好。 - 创建一个隐藏的输入和每一个选择的标签附加到它。 这可以成为标签缺失凌乱,因为我找到了输入的电流值正确的ID,并删除它。 但是,Pro是我只有一个元素,可以把它在一个视图模型来访问它的控制器动作。
- 好奇,看看是否有人知道为什么会这样做的。 他们现在有种defning标准。 很想知道他们是如何做到这一点。
谢谢。
我有一个网站与添加标签的选项运行,很像SO。
我对这个问题的方法,但是,导致我创建一个输入字段为每个添加标签,每添加一个新的输入时间增加一个javascript 指标变量,然后利用一个ViewModel的绑定一个IList<TagDTO> tags { get; set; }
IList<TagDTO> tags { get; set; }
IList<TagDTO> tags { get; set; }
(形式往往随着时间的推移复杂,无论如何,所以一个视图模型几乎总是一个很好的路要走)。 下面是在页面创建的HTML隐藏输入一个例子:
name=tags.Index, value=0
name=tags[0].tagid, value=201
name=tags.Index, value=2
name=tags[2].tagid, value=307
这有一个很大的优势对我说:国际化的标签,并可能禁止不存在变量。
我的意思是,每个标签都有一个ID,并在数据库中的我的“标签”表有对我支持的每种语言此标记的名称一列。 如:
tagid | name_ptBR | name_en
201 | animais | animals
307 | educacional | educational
这只是我的方法解决问题,但它已确定到目前为止制定。
堆栈溢出只是有一个文本输入框,它与由JavaScript自动完成增强。 当它发送到服务器,该领域以由空格分开,以及相应的标签是由名称查找。 我建议你这样做,因为它是最方便的所有选项。
文章来源: Submit javascript dynamically added elements to controller method like Stackoverflow