2

简单地说:我想让用户在 JS 中选择一些标签并将其提交给我的控制器。以下是我的建议:

  • 为每个插入的标签创建一个隐藏输入,命名约定如下:Tag123(123 = 此标签的唯一标识符)并FormCollection在我的操作方法中迭代以找出已选择的标签。缺点很明显:使用FormCollection而不是ViewModel迭代FormCollection来获取我想要的数据对我来说似乎很糟糕。
  • 创建一个隐藏输入并将每个选定的标签附加到它。这可能会在标签删除时变得混乱,因为我应该从输入的当前值中找到正确的 id 并将其删除。但优点是我只有一个元素,可以将它放在视图模型中,以便在控制器操作中访问它。
  • 很想知道是否有人知道 SO 是如何做到的。他们现在有点定义标准。很想知道他们是怎么做到的。

谢谢。

4

2 回答 2

1

Stack Overflow 只有一个文本输入字段,它通过 JavaScript 的自动完成功能得到了增强。发送到服务器时,该字段以空格分隔,并按名称查找对应的标签。我建议您这样做,因为它是所有选项中最容易访问的。

于 2012-04-14T23:10:14.080 回答
1

我有一个网站,可以选择添加标签,就像 SO。
然而,我解决问题的方法导致我为每个添加的标签创建一个输入字段,并在每次添加新输入时增加一个 javascript索引变量,然后使用 ViewModel 绑定 a 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

这只是我解决问题的方法,但到目前为止效果还不错。

于 2012-04-14T23:19:56.037 回答