简单来说:我想让用户在JS中选择一些标签并将其提交到我的 Controller 。以下是我的建议:
- 为每个插入的标签创建一个隐藏输入,命名约定如下:
Tag123
(123 = 此标签的唯一标识符),并在我的操作方法中迭代FormCollection
以找出答案已选择哪些标签。缺点很明显:使用FormCollection
而不是ViewModel
并迭代FormCollection
来获取我想要的数据对我来说似乎很糟糕。 - 创建一个隐藏输入并将每个选定的标签附加到其中。这在标签删除时可能会变得困惑,因为我应该从输入的当前值中找到正确的 id 并将其删除。但优点是我只有一个元素,可以将其放入 View 模型中以在 Controller 操作中访问它。
- 很想知道是否有人知道如何做到这一点。他们现在正在定义标准。很想知道他们是如何做到的。
谢谢。
最佳答案
我有一个正在运行的网站,可以选择添加标签,就像这样。
然而,我解决这个问题的方法是为每个添加的标签创建一个输入字段,并在每次添加新输入时增加一个 javascript index 变量,然后使用 ViewModel 来绑定(bind)IList<TagDTO> tags { get; set; }
(无论如何,随着时间的推移,表单往往会变得复杂,因此 View 模型几乎总是一个好方法)。以下是在页面中创建的 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 - 将 javascript 动态添加的元素提交到 Controller 方法,如 Stackoverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158089/