javascript - 将 javascript 动态添加的元素提交到 Controller 方法,如 Stackoverflow

标签 javascript asp.net-mvc-3 viewmodel form-submit formcollection

简单来说:我想让用户在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/

相关文章:

javascript - AngularJS:使服务状态可观察

c# - 与进度条并行处理一个月的日期

c# - MVVM:单独的 ViewModel 的目的是什么?

c# - 多个 View 模型共享一个带有通知的服务

wpf - 将 View 拆分为两个单独的 View

javascript - 如何隐藏/显示 Bootstrap 网格中的元素并更新位置

javascript - jQuery:toggleClass,多个 <td> 元素,只有一个突出显示

javascript - 在 React-native 中按下按钮后双触发

c# - 领域驱动设计和聚合

asp.net-mvc-3 - SlowCheetah - 使用转换后的链接配置文件来共享配置元素