提交的JavaScript动态添加元素,以像#1的控制器方法(Submit javascript d

2019-09-16 13:03发布

简单地说:我想,让用户选择在JS的一些标签,并提交给我的控制器。 这里是我的建议:

  • 与命名约定如创建为每个标签插入一个隐藏的输入: Tag123 (123 =这个标签的唯一标识符),并通过迭代FormCollection在我的操作方法,以找出哪些标签已被选定。 缺点也很明显:使用FormCollection而不是ViewModel和迭代通过FormCollection得到我想要的数据似乎对我不好。
  • 创建一个隐藏的输入和每一个选择的标签附加到它。 这可以成为标签缺失凌乱,因为我找到了输入的电流值正确的ID,并删除它。 但是,Pro是我只有一个元素,可以把它在一个视图模型来访问它的控制器动作。
  • 好奇,看看是否有人知道为什么会这样做的。 他们现在有种defning标准。 很想知道他们是如何做到这一点。

谢谢。

Answer 1:

我有一个网站与添加标签的选项运行,很像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

这只是我的方法解决问题,但它已确定到目前为止制定。



Answer 2:

堆栈溢出只是有一个文本输入框,它与由JavaScript自动完成增强。 当它发送到服务器,该领域以由空格分开,以及相应的标签是由名称查找。 我建议你这样做,因为它是最方便的所有选项。



文章来源: Submit javascript dynamically added elements to controller method like Stackoverflow